diff --git a/server/rooms.ts b/server/rooms.ts index dbc465bf69..9ca16abee0 100644 --- a/server/rooms.ts +++ b/server/rooms.ts @@ -1415,15 +1415,23 @@ export class GlobalRoomState { return; } this.lastReportedCrash = time; - // @ts-ignore - const stackLines = (err ? Utils.escapeHTML(err.stack).split(`\n`) : []); - const stack = stackLines.slice(1).join(`
`); + const stack = err.stack || err.message || err.name || ''; + const stackLines = (err ? Utils.escapeHTML(stack).split(`\n`) : []); let crashMessage = `|html|
${crasher} crashed: ${stackLines[0]}${stack}
`; let privateCrashMessage = null; const upperStaffRoom = Rooms.get('upperstaff'); - if (stack.includes("private")) { + + let hasPrivateTerm = stack.includes('private'); + for (const term of (Config.privatecrashterms || [])) { + if (typeof term === 'string' ? stack.includes(term) : term.test(stack)) { + hasPrivateTerm = true; + break; + } + } + + if (hasPrivateTerm) { if (upperStaffRoom) { privateCrashMessage = crashMessage; crashMessage = `|html|
${crasher} crashed in private code Read more
`;