diff --git a/ts/messageModifiers/AttachmentDownloads.ts b/ts/messageModifiers/AttachmentDownloads.ts index 1fffa349ea24..a8bf656bdde3 100644 --- a/ts/messageModifiers/AttachmentDownloads.ts +++ b/ts/messageModifiers/AttachmentDownloads.ts @@ -31,6 +31,7 @@ import { getMaximumIncomingAttachmentSizeInKb, getMaximumIncomingTextAttachmentSizeInKb, } from '../types/AttachmentSize'; +import { redactCdnKey } from '../util/privacy'; const { getMessageById, @@ -221,7 +222,6 @@ async function _maybeStartJob(): Promise { const logId = `attachment_downloads/_maybeStartJob/postProcess/${job.id}`; try { await promise; - log.info(`${logId}: job has finished running`); if (_activeAttachmentDownloadJobs[job.id]) { throw new Error( `${logId}: Active attachments jobs list still has this job!` @@ -269,12 +269,18 @@ async function _runJob(job?: AttachmentDownloadJobType): Promise { ); } - logger.info(`attachment_downloads/_runJob(${id}): starting`); - const pending = true; await setAttachmentDownloadJobPending(id, pending); message = await _getMessageById(id, messageId); + logger.info( + 'attachment_downloads/_runJob' + + `(jobId: ${id}, type: ${type}, index: ${index},` + + ` cdnKey: ${ + attachment.cdnKey ? redactCdnKey(attachment.cdnKey) : null + },` + + ` messageTimestamp: ${message?.attributes.timestamp}): starting` + ); if (!message) { return; @@ -475,10 +481,6 @@ async function _finishJob( await saveMessage(message.attributes, { ourAci: window.textsecure.storage.user.getCheckedAci(), }); - } else { - logger.info( - `attachment_downloads/_finishJob for job id: ${id} without message` - ); } await removeAttachmentDownloadJob(id); @@ -525,8 +527,6 @@ async function _addAttachmentToMessage( const logPrefix = `${message.idForLogging()} (type: ${type}, index: ${index})`; const attachmentSignature = getAttachmentSignature(attachment); - log.info(`${logPrefix}: _addAttachmentToMessage: starting`); - if (type === 'long-message') { let handledAnywhere = false; let attachmentData: Uint8Array | undefined; @@ -612,7 +612,6 @@ async function _addAttachmentToMessage( `${logPrefix}: Long message attachment found no matching place to apply` ); } - log.info(`${logPrefix}: _addAttachmentToMessage finished`); } return; } diff --git a/ts/textsecure/downloadAttachment.ts b/ts/textsecure/downloadAttachment.ts index e97230b89255..347907ebe470 100644 --- a/ts/textsecure/downloadAttachment.ts +++ b/ts/textsecure/downloadAttachment.ts @@ -27,6 +27,7 @@ import { import type { ProcessedAttachment } from './Types.d'; import type { WebAPIType } from './WebAPI'; import { createName, getRelativePath } from '../windows/attachments'; +import { redactCdnKey } from '../util/privacy'; export function getCdn(attachment: ProcessedAttachment): string { const { cdnId, cdnKey } = attachment; @@ -89,7 +90,7 @@ export async function downloadAttachmentV2( ): Promise { const { cdnNumber, contentType, digest, key, size } = attachment; const cdn = getCdn(attachment); - const logId = `downloadAttachmentV2(${cdn}):`; + const logId = `downloadAttachmentV2(${redactCdnKey(cdn)}:`; strictAssert(digest, `${logId}: missing digest`); strictAssert(key, `${logId}: missing key`); @@ -100,11 +101,8 @@ export async function downloadAttachmentV2( dropNull(cdnNumber), options ); - log.info(`${logId} got download stream`); const cipherTextRelativePath = await downloadToDisk({ downloadStream, size }); - log.info(`${logId} downloaded encrypted file to disk`); - const cipherTextAbsolutePath = window.Signal.Migrations.getAbsoluteAttachmentPath(cipherTextRelativePath); @@ -115,7 +113,6 @@ export async function downloadAttachmentV2( size, theirDigest: Bytes.fromBase64(digest), }); - log.info(`${logId} successfully decrypted`); safeUnlinkSync(cipherTextAbsolutePath); diff --git a/ts/types/Attachment.ts b/ts/types/Attachment.ts index 6b5e469738dc..6e3891d9b698 100644 --- a/ts/types/Attachment.ts +++ b/ts/types/Attachment.ts @@ -413,19 +413,15 @@ export async function captureDimensionsAndScreenshot( if (!attachment.path) { return attachment; } - logger.info('captureDimensionsAndScreenshot: starting'); const absolutePath = getAbsoluteAttachmentPath(attachment.path); if (GoogleChrome.isImageTypeSupported(contentType)) { try { - logger.info('captureDimensionsAndScreenshot: getting image dimensions'); const { width, height } = await getImageDimensionsFromURL({ objectUrl: absolutePath, logger, }); - - logger.info('captureDimensionsAndScreenshot: generating thumbnail'); const thumbnailBuffer = await blobToArrayBuffer( await makeImageThumbnail({ size: THUMBNAIL_SIZE, @@ -434,7 +430,7 @@ export async function captureDimensionsAndScreenshot( logger, }) ); - logger.info('captureDimensionsAndScreenshot: writing thumbnail'); + const thumbnailPath = await writeNewAttachmentData( new Uint8Array(thumbnailBuffer) ); @@ -461,7 +457,6 @@ export async function captureDimensionsAndScreenshot( let screenshotObjectUrl: string | undefined; try { - logger.info('captureDimensionsAndScreenshot: making video screenshot'); const screenshotBuffer = await blobToArrayBuffer( await makeVideoScreenshot({ objectUrl: absolutePath, @@ -473,17 +468,14 @@ export async function captureDimensionsAndScreenshot( screenshotBuffer, THUMBNAIL_CONTENT_TYPE ); - logger.info('captureDimensionsAndScreenshot: getting image dimensions'); const { width, height } = await getImageDimensionsFromURL({ objectUrl: screenshotObjectUrl, logger, }); - logger.info('captureDimensionsAndScreenshot: writing attachment data'); const screenshotPath = await writeNewAttachmentData( new Uint8Array(screenshotBuffer) ); - logger.info('captureDimensionsAndScreenshot: making thumbnail'); const thumbnailBuffer = await blobToArrayBuffer( await makeImageThumbnail({ size: THUMBNAIL_SIZE, @@ -493,7 +485,6 @@ export async function captureDimensionsAndScreenshot( }) ); - logger.info('captureDimensionsAndScreenshot: writing thumbnail'); const thumbnailPath = await writeNewAttachmentData( new Uint8Array(thumbnailBuffer) ); diff --git a/ts/util/privacy.ts b/ts/util/privacy.ts index efe910a62bd4..e1089cae9aa8 100644 --- a/ts/util/privacy.ts +++ b/ts/util/privacy.ts @@ -163,6 +163,10 @@ export const redactCallLinkRootKeys = (text: string): string => { return text.replace(CALL_LINK_ROOT_KEY_PATTERN, `${REDACTION_PLACEHOLDER}$1`); }; +export const redactCdnKey = (cdnKey: string): string => { + return `${REDACTION_PLACEHOLDER}${cdnKey.slice(-3)}`; +}; + const createRedactSensitivePaths = ( paths: ReadonlyArray ): RedactFunction => {