audit
This commit is contained in:
@@ -160,9 +160,13 @@ async function poll(client) {
|
||||
|
||||
if (ticketChan) {
|
||||
const truncatedFollowup = followupBody.slice(0, 1800);
|
||||
// Role ping is intentional; body is attacker-controlled email content — suppress user/everyone mentions.
|
||||
await enqueueSend(
|
||||
ticketChan,
|
||||
`<@&${CONFIG.ROLE_ID_TO_PING}>\n**New Follow-up from ${sEmail}:**\n${truncatedFollowup}`
|
||||
{
|
||||
content: `<@&${CONFIG.ROLE_ID_TO_PING}>\n**New Follow-up from ${sEmail}:**\n${truncatedFollowup}`,
|
||||
allowedMentions: { parse: ['roles'] }
|
||||
}
|
||||
);
|
||||
} else {
|
||||
// Check ticket limits before creating
|
||||
@@ -256,7 +260,8 @@ async function poll(client) {
|
||||
const welcomeMsg = await enqueueSend(ticketChan, {
|
||||
content: `<@&${CONFIG.ROLE_ID_TO_PING}>`,
|
||||
embeds: [ticketInfoEmbed],
|
||||
components: [buttons]
|
||||
components: [buttons],
|
||||
allowedMentions: { parse: ['roles'] }
|
||||
});
|
||||
|
||||
const { createStaffThread } = require('./services/staffThread');
|
||||
@@ -311,7 +316,8 @@ async function poll(client) {
|
||||
}
|
||||
|
||||
const truncated = firstBody.slice(0, 1900);
|
||||
await enqueueSend(ticketChan, `**Message:**\n${truncated}`);
|
||||
// Email body is attacker-controlled — no mentions may fire from its content.
|
||||
await enqueueSend(ticketChan, { content: `**Message:**\n${truncated}`, allowedMentions: { parse: [] } });
|
||||
|
||||
// Welcome message skipped for email tickets – the email body speaks for itself.
|
||||
// Panel-created (Discord) tickets still send the welcome message in handlers/buttons.js.
|
||||
@@ -369,7 +375,7 @@ async function poll(client) {
|
||||
pollSuspended = true;
|
||||
const suspendMsg = 'Gmail OAuth token invalid or expired. Polling SUSPENDED — will not retry automatically. Re-authenticate to resume.';
|
||||
console.error('[gmail-poll]', suspendMsg);
|
||||
logError('Gmail OAuth', { message: suspendMsg, stack: e.stack || e.message || String(e) }, null, client);
|
||||
logError('Gmail OAuth', { message: suspendMsg, stack: e.stack || e.message || String(e) }, null, client).catch(() => {});
|
||||
try { require('./broccolini-discord').clearGmailPollInterval?.(); } catch (_) {}
|
||||
if (CONFIG.ADMIN_ID && !authErrorNotified) {
|
||||
authErrorNotified = true;
|
||||
@@ -379,7 +385,7 @@ async function poll(client) {
|
||||
|
||||
totalErrors++;
|
||||
console.error('POLL ERROR:', e);
|
||||
logError('Gmail poll', e, null, client);
|
||||
logError('Gmail poll', e, null, client).catch(() => {});
|
||||
}
|
||||
} finally {
|
||||
isPolling = false;
|
||||
|
||||
Reference in New Issue
Block a user