Implement logger on pusher

This commit is contained in:
Alexis Faizeau
2021-11-08 19:05:25 +01:00
parent 6a195be814
commit dd89f12c2e
15 changed files with 263 additions and 72 deletions
+5 -4
View File
@@ -7,6 +7,7 @@ import {
WorldFullWarningToRoomMessage,
RefreshRoomPromptMessage,
} from "../Messages/generated/messages_pb";
import log from "../Services/Logger";
export class AdminController extends BaseController {
constructor(private App: TemplatedApp) {
@@ -25,14 +26,14 @@ export class AdminController extends BaseController {
// eslint-disable-next-line @typescript-eslint/no-misused-promises
this.App.post("/room/refresh", async (res: HttpResponse, req: HttpRequest) => {
res.onAborted(() => {
console.warn("/message request was aborted");
log.warn("/message request was aborted");
});
const token = req.getHeader("admin-token");
const body = await res.json();
if (token !== ADMIN_API_TOKEN) {
console.error("Admin access refused for token: " + token);
log.error("Admin access refused for token: " + token);
res.writeStatus("401 Unauthorized").end("Incorrect token");
return;
}
@@ -72,14 +73,14 @@ export class AdminController extends BaseController {
// eslint-disable-next-line @typescript-eslint/no-misused-promises
this.App.post("/message", async (res: HttpResponse, req: HttpRequest) => {
res.onAborted(() => {
console.warn("/message request was aborted");
log.warn("/message request was aborted");
});
const token = req.getHeader("admin-token");
const body = await res.json();
if (token !== ADMIN_API_TOKEN) {
console.error("Admin access refused for token: " + token);
log.error("Admin access refused for token: " + token);
res.writeStatus("401 Unauthorized").end("Incorrect token");
return;
}
+13 -12
View File
@@ -5,6 +5,7 @@ import { adminApi } from "../Services/AdminApi";
import { AuthTokenData, jwtTokenManager } from "../Services/JWTTokenManager";
import { parse } from "query-string";
import { openIDClient } from "../Services/OpenIDClient";
import log from "../Services/Logger";
export interface TokenInterface {
userUuid: string;
@@ -24,7 +25,7 @@ export class AuthenticateController extends BaseController {
//eslint-disable-next-line @typescript-eslint/no-misused-promises
this.App.get("/login-screen", async (res: HttpResponse, req: HttpRequest) => {
res.onAborted(() => {
console.warn("/message request was aborted");
log.warn("/message request was aborted");
});
try {
@@ -43,7 +44,7 @@ export class AuthenticateController extends BaseController {
res.writeHeader("Location", loginUri);
return res.end();
} catch (e) {
console.error("openIDLogin => e", e);
log.error("openIDLogin => e", e);
return this.errorToResponse(e, res);
}
});
@@ -53,7 +54,7 @@ export class AuthenticateController extends BaseController {
//eslint-disable-next-line @typescript-eslint/no-misused-promises
this.App.get("/login-callback", async (res: HttpResponse, req: HttpRequest) => {
res.onAborted(() => {
console.warn("/message request was aborted");
log.warn("/message request was aborted");
});
const { code, nonce, token } = parse(req.getQuery());
try {
@@ -69,7 +70,7 @@ export class AuthenticateController extends BaseController {
this.addCorsHeaders(res);
return res.end(JSON.stringify({ authToken: token }));
} catch (err) {
console.info("User was not connected", err);
log.info("User was not connected", err);
}
}
@@ -84,7 +85,7 @@ export class AuthenticateController extends BaseController {
this.addCorsHeaders(res);
return res.end(JSON.stringify({ authToken }));
} catch (e) {
console.error("openIDCallback => ERROR", e);
log.error("openIDCallback => ERROR", e);
return this.errorToResponse(e, res);
}
});
@@ -92,7 +93,7 @@ export class AuthenticateController extends BaseController {
// eslint-disable-next-line @typescript-eslint/no-misused-promises
this.App.get("/logout-callback", async (res: HttpResponse, req: HttpRequest) => {
res.onAborted(() => {
console.warn("/message request was aborted");
log.warn("/message request was aborted");
});
const { token } = parse(req.getQuery());
@@ -104,7 +105,7 @@ export class AuthenticateController extends BaseController {
}
await openIDClient.logoutUser(authTokenData.hydraAccessToken);
} catch (error) {
console.error("openIDCallback => logout-callback", error);
log.error("openIDCallback => logout-callback", error);
} finally {
res.writeStatus("200");
this.addCorsHeaders(res);
@@ -125,7 +126,7 @@ export class AuthenticateController extends BaseController {
this.App.post("/register", (res: HttpResponse, req: HttpRequest) => {
(async () => {
res.onAborted(() => {
console.warn("Login request was aborted");
log.warn("Login request was aborted");
});
const param = await res.json();
@@ -156,7 +157,7 @@ export class AuthenticateController extends BaseController {
})
);
} catch (e) {
console.error("register => ERROR", e);
log.error("register => ERROR", e);
this.errorToResponse(e, res);
}
})();
@@ -172,7 +173,7 @@ export class AuthenticateController extends BaseController {
this.App.post("/anonymLogin", (res: HttpResponse, req: HttpRequest) => {
res.onAborted(() => {
console.warn("Login request was aborted");
log.warn("Login request was aborted");
});
const userUuid = v4();
@@ -194,7 +195,7 @@ export class AuthenticateController extends BaseController {
// eslint-disable-next-line @typescript-eslint/no-misused-promises
this.App.get("/profile-callback", async (res: HttpResponse, req: HttpRequest) => {
res.onAborted(() => {
console.warn("/message request was aborted");
log.warn("/message request was aborted");
});
const { userIdentify, token } = parse(req.getQuery());
try {
@@ -218,7 +219,7 @@ export class AuthenticateController extends BaseController {
}
}
} catch (error) {
console.error("profileCallback => ERROR", error);
log.error("profileCallback => ERROR", error);
this.errorToResponse(error, res);
}
});
+4 -3
View File
@@ -1,4 +1,5 @@
import { HttpResponse } from "uWebSockets.js";
import log from "../Services/Logger";
export class BaseController {
protected addCorsHeaders(res: HttpResponse): void {
@@ -19,12 +20,12 @@ export class BaseController {
} else {
url = "";
}
console.error("ERROR: " + e.message + url);
log.error("ERROR: " + e.message + url);
} else if (typeof e === "string") {
console.error(e);
log.error(e);
}
if (e.stack) {
console.error(e.stack);
log.error(e.stack);
}
if (e.response) {
res.writeStatus(e.response.status + " " + e.response.statusText);
+14 -13
View File
@@ -31,6 +31,7 @@ import { Zone } from "_Model/Zone";
import { ExAdminSocketInterface } from "_Model/Websocket/ExAdminSocketInterface";
import { v4 } from "uuid";
import { CharacterTexture } from "../Services/AdminApi/CharacterTexture";
import log from "../Services/Logger";
export class IoSocketController {
private nextUserId: number = 1;
@@ -49,13 +50,13 @@ export class IoSocketController {
const websocketExtensions = req.getHeader("sec-websocket-extensions");
const token = query.token;
if (token !== ADMIN_API_TOKEN) {
console.log("Admin access refused for token: " + token);
log.info("Admin access refused for token: " + token);
res.writeStatus("401 Unauthorized").end("Incorrect token");
return;
}
const roomId = query.roomId;
if (typeof roomId !== "string") {
console.error("Received");
log.error("Received");
res.writeStatus("400 Bad Request").end("Missing room id");
return;
}
@@ -63,7 +64,7 @@ export class IoSocketController {
res.upgrade({ roomId }, websocketKey, websocketProtocol, websocketExtensions, context);
},
open: (ws) => {
console.log("Admin socket connect for room: " + ws.roomId);
log.info("Admin socket connect for room: " + ws.roomId);
ws.disconnecting = false;
socketManager.handleAdminRoom(ws as ExAdminSocketInterface, ws.roomId as string);
@@ -96,7 +97,7 @@ export class IoSocketController {
}
}
} catch (err) {
console.error(err);
log.error(err);
}
},
close: (ws, code, message) => {
@@ -105,8 +106,8 @@ export class IoSocketController {
Client.disconnecting = true;
socketManager.leaveAdminRoom(Client);
} catch (e) {
console.error('An error occurred on admin "disconnect"');
console.error(e);
log.error('An error occurred on admin "disconnect"');
log.error(e);
}
},
});
@@ -198,7 +199,7 @@ export class IoSocketController {
if (err?.response?.status == 404) {
// If we get an HTTP 404, the token is invalid. Let's perform an anonymous login!
console.warn(
log.warn(
'Cannot find user with email "' +
(userIdentifier || "anonymous") +
'". Performing an anonymous login instead.'
@@ -238,13 +239,13 @@ export class IoSocketController {
throw new Error("Use the login URL to connect");
}
} catch (e) {
console.log(
log.info(
"access not granted for user " +
(userIdentifier || "anonymous") +
" and room " +
roomId
);
console.error(e);
log.error(e);
throw new Error("User cannot access this world");
}
}
@@ -254,7 +255,7 @@ export class IoSocketController {
SocketManager.mergeCharacterLayersAndCustomTextures(characterLayers, memberTextures);
if (upgradeAborted.aborted) {
console.log("Ouch! Client disconnected before we could upgrade it!");
log.info("Ouch! Client disconnected before we could upgrade it!");
/* You must not upgrade now */
return;
}
@@ -395,7 +396,7 @@ export class IoSocketController {
//let ok = ws.send(message, isBinary);
},
drain: (ws) => {
console.log("WebSocket backpressure: " + ws.getBufferedAmount());
log.info("WebSocket backpressure: " + ws.getBufferedAmount());
},
close: (ws, code, message) => {
const Client = ws as ExSocketInterface;
@@ -404,8 +405,8 @@ export class IoSocketController {
//leave room
socketManager.leaveRoom(Client);
} catch (e) {
console.error('An error occurred on "disconnect"');
console.error(e);
log.error('An error occurred on "disconnect"');
log.error(e);
}
},
});
+4 -3
View File
@@ -8,6 +8,7 @@ import { MapDetailsData } from "../Services/AdminApi/MapDetailsData";
import { socketManager } from "../Services/SocketManager";
import { AuthTokenData, jwtTokenManager } from "../Services/JWTTokenManager";
import { v4 } from "uuid";
import log from "../Services/Logger";
export class MapController extends BaseController {
constructor(private App: TemplatedApp) {
@@ -26,13 +27,13 @@ export class MapController extends BaseController {
this.App.get("/map", (res: HttpResponse, req: HttpRequest) => {
res.onAborted(() => {
console.warn("/map request was aborted");
log.warn("/map request was aborted");
});
const query = parse(req.getQuery());
if (typeof query.playUri !== "string") {
console.error("Expected playUri parameter in /map endpoint");
log.error("Expected playUri parameter in /map endpoint");
res.writeStatus("400 Bad request");
this.addCorsHeaders(res);
res.end("Expected playUri parameter");
@@ -82,7 +83,7 @@ export class MapController extends BaseController {
// Decode token, in this case we don't need to create new token.
authTokenData = jwtTokenManager.verifyJWTToken(query.authToken as string, true);
userId = authTokenData.identifier;
console.info("JWT expire, but decoded", userId);
log.info("JWT expire, but decoded", userId);
}
}
const mapDetails = await adminApi.fetchMapDetails(query.playUri as string, userId);