Skip to content

Commit

Permalink
refactoring logging
Browse files Browse the repository at this point in the history
  • Loading branch information
cap-ang committed Jun 21, 2024
1 parent de89ff2 commit c4f3fe7
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import it.gov.pagopa.wispconverter.exception.AppException;
import it.gov.pagopa.wispconverter.repository.CacheRepository;
import it.gov.pagopa.wispconverter.service.model.ReceiptDto;
import it.gov.pagopa.wispconverter.util.LogUtils;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
Expand Down Expand Up @@ -56,32 +57,32 @@ public void sendMessage(ReceiptTimerRequest message) {
.noticeNumber(message.getNoticeNumber())
.build();
ServiceBusMessage serviceBusMessage = new ServiceBusMessage(receiptDto.toString());
log.info("Sending scheduled message {} to the queue: {}", message, queueName);
log.debug("Sending scheduled message {} to the queue: {}", message, queueName);

Check failure

Code scanning / CodeQL

Log Injection High

This log entry depends on a
user-provided value
.
// compute time and schedule message for consumer trigger
OffsetDateTime scheduledExpirationTime = OffsetDateTime.now().plus(message.getExpirationTime(), ChronoUnit.MILLIS);
Long sequenceNumber = serviceBusSenderClient.scheduleMessage(serviceBusMessage, scheduledExpirationTime);
log.info("Sent scheduled message {} to the queue: {}", message, queueName);
log.info("Sent scheduled message_base64 {} to the queue: {}", LogUtils.encodeToBase64(message.toString()), queueName);

Check failure

Code scanning / CodeQL

Insertion of sensitive information into log files High

This
potentially sensitive information
is written to a log file.

Check failure

Code scanning / CodeQL

Log Injection High

This log entry depends on a
user-provided value
.
// insert {wisp_timer_<paymentToken>, sequenceNumber} for Duplicate Prevention Logic and for call cancelScheduledMessage(sequenceNumber)
cacheRepository.insert(sequenceNumberKey, String.valueOf(sequenceNumber), message.getExpirationTime(), ChronoUnit.MILLIS);
log.info("Cache sequence number {} for payment-token: {}", sequenceNumber, sequenceNumberKey);
log.debug("Cache sequence number {} for payment-token: {}", sequenceNumber, sequenceNumberKey);

Check failure

Code scanning / CodeQL

Insertion of sensitive information into log files High

This
potentially sensitive information
is written to a log file.

Check failure

Code scanning / CodeQL

Log Injection High

This log entry depends on a
user-provided value
.
}

public void cancelScheduledMessage(List<String> paymentTokens) {
paymentTokens.forEach(this::cancelScheduledMessage);
}

private void cancelScheduledMessage(String paymentToken) {
log.info("Cancel scheduled message for payment-token {}", paymentToken);
log.debug("Cancel scheduled message for payment-token {}", paymentToken);

Check failure

Code scanning / CodeQL

Insertion of sensitive information into log files High

This
potentially sensitive information
is written to a log file.

Check failure

Code scanning / CodeQL

Log Injection High

This log entry depends on a
user-provided value
.
String sequenceNumberKey = String.format(CACHING_KEY_TEMPLATE, paymentToken);
String sequenceNumberString = cacheRepository.read(sequenceNumberKey, String.class);
// the message related to payment-token has either already been deleted or it does not exist:
// without sequenceNumber is not possible to delete from serviceBus -> return
if(sequenceNumberString == null) return;
// cancel scheduled message
if(this.callCancelScheduledMessage(sequenceNumberString)) {
log.info("Canceled scheduled message for payment-token {}", paymentToken);
log.info("Canceled scheduled message for payment-token_base64 {}", LogUtils.encodeToBase64(paymentToken));

Check failure

Code scanning / CodeQL

Insertion of sensitive information into log files High

This
potentially sensitive information
is written to a log file.

Check failure

Code scanning / CodeQL

Log Injection High

This log entry depends on a
user-provided value
.
cacheRepository.delete(sequenceNumberKey);
log.info("Deleted sequence number {} for payment-token: {} from cache", sequenceNumberString, sequenceNumberKey);
log.debug("Deleted sequence number {} for payment-token: {} from cache", sequenceNumberString, sequenceNumberKey);

Check failure

Code scanning / CodeQL

Insertion of sensitive information into log files High

This
potentially sensitive information
is written to a log file.

Check failure

Code scanning / CodeQL

Log Injection High

This log entry depends on a
user-provided value
.
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ public class PaymentTimeoutConsumer extends SBConsumer {
@EventListener(ApplicationReadyEvent.class)
public void initializeClient() {
if(receiverClient!=null){
log.info("[Scheduled] Starting RTConsumer {}", ZonedDateTime.now());
log.debug("[Scheduled] Starting RTConsumer {}", ZonedDateTime.now());
receiverClient.start();
}
}
Expand All @@ -51,7 +51,7 @@ public void post(){

public void processMessage(ServiceBusReceivedMessageContext context) {
ServiceBusReceivedMessage message = context.getMessage();
log.info("Processing message. Session: {}, Sequence #: {}. Contents: {}", message.getMessageId(),
log.debug("Processing message. Session: {}, Sequence #: {}. Contents: {}", message.getMessageId(),
message.getSequenceNumber(), message.getBody());
try {
ReceiptDto receiptDto = mapper.readValue(message.getBody().toStream(), ReceiptDto.class);
Expand Down
16 changes: 16 additions & 0 deletions src/main/java/it/gov/pagopa/wispconverter/util/LogUtils.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package it.gov.pagopa.wispconverter.util;

import java.util.Base64;

public class LogUtils {

/**
* Encodes a given token to Base64.
*
* @param message the string to encode
* @return the Base64 encoded message
*/
public static String encodeToBase64(String message) {
return Base64.getEncoder().encodeToString(message.getBytes());
}
}

0 comments on commit c4f3fe7

Please sign in to comment.