Skip to content

Commit 96d9d1a

Browse files
committed
🔊(y-provider) improve and add logs
We have somes entries with "No cookies", we add more logs to understand why we have this case. We add the datetime in front of each entries as well.
1 parent 771ffdc commit 96d9d1a

File tree

5 files changed

+30
-18
lines changed

5 files changed

+30
-18
lines changed

src/frontend/servers/y-provider/__tests__/hocusPocusWS.test.ts

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,12 @@ jest.mock('../src/env', () => {
1515
COLLABORATION_SERVER_ORIGIN: origin,
1616
COLLABORATION_SERVER_SECRET: 'test-secret-api-key',
1717
COLLABORATION_BACKEND_BASE_URL: 'http://app-dev:8000',
18+
COLLABORATION_LOGGING: 'true',
1819
};
1920
});
2021

2122
console.error = jest.fn();
23+
console.log = jest.fn();
2224

2325
const mockDocFetch = jest.fn();
2426
jest.mock('@/api/getDoc', () => ({
@@ -109,7 +111,9 @@ describe('Server Tests', () => {
109111
quiet: true,
110112
preserveConnection: false,
111113
onClose: (data) => {
112-
expect(console.error).toHaveBeenCalledWith(
114+
expect(console.log).toHaveBeenCalledWith(
115+
expect.any(String),
116+
' --- ',
113117
'Invalid room name - Probable hacking attempt:',
114118
providerName,
115119
room,
@@ -145,7 +149,9 @@ describe('Server Tests', () => {
145149
quiet: true,
146150
preserveConnection: false,
147151
onClose: (data) => {
148-
expect(console.error).toHaveBeenCalledWith(
152+
expect(console.log).toHaveBeenLastCalledWith(
153+
expect.any(String),
154+
' --- ',
149155
'Room name is not a valid uuid:',
150156
room,
151157
);
@@ -180,7 +186,9 @@ describe('Server Tests', () => {
180186
quiet: true,
181187
preserveConnection: false,
182188
onClose: (data) => {
183-
expect(console.error).toHaveBeenCalledWith(
189+
expect(console.log).toHaveBeenLastCalledWith(
190+
expect.any(String),
191+
' --- ',
184192
'Room name is not a valid uuid:',
185193
room,
186194
);
@@ -218,7 +226,7 @@ describe('Server Tests', () => {
218226
quiet: true,
219227
preserveConnection: false,
220228
onClose: (data) => {
221-
expect(console.error).toHaveBeenCalledWith(
229+
expect(console.error).toHaveBeenLastCalledWith(
222230
'[onConnect]',
223231
'Backend error: Unauthorized',
224232
);
@@ -261,7 +269,9 @@ describe('Server Tests', () => {
261269
quiet: true,
262270
preserveConnection: false,
263271
onClose: (data) => {
264-
expect(console.error).toHaveBeenCalledWith(
272+
expect(console.log).toHaveBeenLastCalledWith(
273+
expect.any(String),
274+
' --- ',
265275
'onConnect: Unauthorized to retrieve this document',
266276
room,
267277
);

src/frontend/servers/y-provider/src/handlers/collaborationWSHandler.ts

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,8 @@ import { Request } from 'express';
22
import * as ws from 'ws';
33

44
import { hocusPocusServer } from '@/servers/hocusPocusServer';
5-
import { logger } from '@/utils';
65

76
export const collaborationWSHandler = (ws: ws.WebSocket, req: Request) => {
8-
logger('Incoming Origin:', req.headers['origin']);
9-
107
try {
118
hocusPocusServer.handleConnection(ws, req);
129
} catch (error) {

src/frontend/servers/y-provider/src/middlewares.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ import {
88
Y_PROVIDER_API_KEY,
99
} from '@/env';
1010

11+
import { logger } from './utils';
12+
1113
const VALID_API_KEYS = [COLLABORATION_SERVER_SECRET, Y_PROVIDER_API_KEY];
1214
const allowedOrigins = COLLABORATION_SERVER_ORIGIN.split(',');
1315

@@ -42,14 +44,16 @@ export const wsSecurity = (
4244
const origin = req.headers['origin'];
4345
if (!origin || !allowedOrigins.includes(origin)) {
4446
ws.close(4001, 'Origin not allowed');
45-
console.error('CORS policy violation: Invalid Origin', origin);
47+
logger('CORS policy violation: Invalid Origin', origin);
4648
return;
4749
}
4850

4951
const cookies = req.headers['cookie'];
5052
if (!cookies) {
5153
ws.close(4001, 'No cookies');
52-
console.error('CORS policy violation: No cookies');
54+
logger('CORS policy violation: No cookies');
55+
logger('UA:', req.headers['user-agent']);
56+
logger('URL:', req.url);
5357
return;
5458
}
5559

src/frontend/servers/y-provider/src/servers/hocusPocusServer.ts

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,21 +15,24 @@ export const hocusPocusServer = Server.configure({
1515
documentName,
1616
requestParameters,
1717
context,
18+
request,
1819
}) {
1920
const roomParam = requestParameters.get('room');
2021

2122
if (documentName !== roomParam) {
22-
console.error(
23+
logger(
2324
'Invalid room name - Probable hacking attempt:',
2425
documentName,
2526
requestParameters.get('room'),
2627
);
28+
logger('UA:', request.headers['user-agent']);
29+
logger('URL:', request.url);
2730

2831
return Promise.reject(new Error('Wrong room name: Unauthorized'));
2932
}
3033

3134
if (!uuidValidate(documentName) || uuidVersion(documentName) !== 4) {
32-
console.error('Room name is not a valid uuid:', documentName);
35+
logger('Room name is not a valid uuid:', documentName);
3336

3437
return Promise.reject(new Error('Wrong room name: Unauthorized'));
3538
}
@@ -40,7 +43,7 @@ export const hocusPocusServer = Server.configure({
4043
const document = await fetchDocument(documentName, requestHeaders);
4144

4245
if (!document.abilities.retrieve) {
43-
console.error(
46+
logger(
4447
'onConnect: Unauthorized to retrieve this document',
4548
documentName,
4649
);
@@ -50,7 +53,7 @@ export const hocusPocusServer = Server.configure({
5053
can_edit = document.abilities.update;
5154
} catch (error: unknown) {
5255
if (error instanceof Error) {
53-
console.error('onConnect: backend error', error.message);
56+
logger('onConnect: backend error', error.message);
5457
}
5558

5659
return Promise.reject(new Error('Backend error: Unauthorized'));
@@ -69,12 +72,10 @@ export const hocusPocusServer = Server.configure({
6972
} catch {}
7073

7174
logger(
72-
'Connection established:',
75+
'Connection established on room:',
7376
documentName,
7477
'canEdit:',
7578
can_edit,
76-
'room:',
77-
requestParameters.get('room'),
7879
);
7980
return Promise.resolve();
8081
},

src/frontend/servers/y-provider/src/utils.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { COLLABORATION_LOGGING } from './env';
44
export function logger(...args: any[]) {
55
if (COLLABORATION_LOGGING === 'true') {
66
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument
7-
console.log(...args);
7+
console.log(new Date().toISOString(), ' --- ', ...args);
88
}
99
}
1010

0 commit comments

Comments
 (0)