diff --git a/src/main/java/com/gymtracker/handler/LogAuthHandler.java b/src/main/java/com/gymtracker/handler/LogAuthHandler.java index fdabd28883cd54c2cf54d1c7b5f77f9cb85512d2..f46e9d65552f23f0701d892c84b4def812199fe3 100644 --- a/src/main/java/com/gymtracker/handler/LogAuthHandler.java +++ b/src/main/java/com/gymtracker/handler/LogAuthHandler.java @@ -15,9 +15,8 @@ import javax.xml.ws.handler.MessageContext; import javax.xml.ws.handler.soap.SOAPHandler; import javax.xml.ws.handler.soap.SOAPMessageContext; import java.sql.Timestamp; -import java.util.List; -import java.util.Map; -import java.util.Set; +import java.util.*; +import java.util.stream.Collectors; public class LogAuthHandler implements SOAPHandler<SOAPMessageContext> { @Override @@ -81,6 +80,7 @@ public class LogAuthHandler implements SOAPHandler<SOAPMessageContext> { private void log(SOAPMessageContext smc, boolean authorized) { try { StringBuilder description = new StringBuilder(); + String formattedBodyContent = Util.formatContentBody(smc); if(authorized) { @SuppressWarnings("unchecked") @@ -89,38 +89,27 @@ public class LogAuthHandler implements SOAPHandler<SOAPMessageContext> { String token = (String) httpHeaders.get("Authorization").get(0); String phpKey = dotenv.get("PHP_KEY"); - description.append("Authorized access: "); + description.append("Authorized access; "); String caller = token.equals(phpKey) ? "PHP" : "Node"; description.append(caller).append(" call to "); QName operation = (QName) smc.get(MessageContext.WSDL_OPERATION); description.append(operation.getLocalPart()); - SOAPMessage soapMessage = smc.getMessage(); - SOAPBody soapBody = soapMessage.getSOAPBody(); - String bodyContent = soapBody.getTextContent(); - - description.append(" with body: "); - description.append(bodyContent); - } else { - description.append("Unauthorized access: Tried to call "); + description.append("Unauthorized access; Tried to call "); QName operation = (QName) smc.get(MessageContext.WSDL_OPERATION); description.append(operation.getLocalPart()); - SOAPMessage soapMessage = smc.getMessage(); - SOAPBody soapBody = soapMessage.getSOAPBody(); - String bodyContent = soapBody.getTextContent(); - - description.append(" with body: "); - description.append(bodyContent); } + description.append(" with arguments:\n"); + description.append(formattedBodyContent); Logging logging = new Logging(); logging.setRequestDescription(description.toString()); logging.setEndpoint(Util.getURL(smc)); logging.setIPAddress(Util.getIP(smc)); - logging.setTimestamp(new Timestamp(System.currentTimeMillis())); + logging.setTimestamp(Util.toUTCSeven(new Timestamp(System.currentTimeMillis()))); SessionFactory sessionFactory = HibernateUtil.getSessionFactory(); Session session = sessionFactory.getCurrentSession(); diff --git a/src/main/java/com/gymtracker/util/Util.java b/src/main/java/com/gymtracker/util/Util.java index 8892ca75cf6d088bf314b9b6b3d8568e6cbcbd3b..3be64fe87c8e3c0fd6f68a27f2b7a0c3e9a0b329 100644 --- a/src/main/java/com/gymtracker/util/Util.java +++ b/src/main/java/com/gymtracker/util/Util.java @@ -1,15 +1,16 @@ package com.gymtracker.util; -// import javax.xml.namespace.QName; -// import javax.xml.soap.SOAPBody; -// import javax.xml.soap.SOAPElement; -// import javax.xml.soap.SOAPException; -// import javax.xml.soap.SOAPMessage; -// import javax.xml.ws.handler.soap.SOAPMessageContext; +import javax.xml.soap.SOAPBody; +import javax.xml.soap.SOAPMessage; import javax.xml.ws.handler.MessageContext; +import javax.xml.ws.handler.soap.SOAPMessageContext; import java.lang.reflect.Method; import java.net.InetSocketAddress; import java.net.URI; +import java.sql.Timestamp; +import java.util.Arrays; +import java.util.Calendar; +import java.util.stream.Collectors; public class Util { public static String getIP(MessageContext mc) { @@ -41,4 +42,34 @@ public class Util { return ""; } } + + public static String formatContentBody(SOAPMessageContext smc) { + try { + SOAPMessage soapMessage = smc.getMessage(); + SOAPBody soapBody = soapMessage.getSOAPBody(); + String bodyContent = soapBody.getTextContent(); + + String[] lines = bodyContent.split("\\n"); + // Filter out empty lines and remove leading whitespaces + return Arrays.stream(lines) + .map(String::trim) + .filter(s -> !s.isEmpty()) + .collect(Collectors.joining(",\n")); + } catch (Exception e) { + e.printStackTrace(); + return ""; + } + } + + public static Timestamp toUTCSeven(Timestamp timestamp) { + try { + Calendar calendar = Calendar.getInstance(); + calendar.setTimeInMillis(timestamp.getTime()); + calendar.add(Calendar.HOUR_OF_DAY, 7); + return new Timestamp(calendar.getTimeInMillis()); + } catch (Exception e) { + e.printStackTrace(); + return new Timestamp(System.currentTimeMillis()); + } + } }