diff --git a/consoleInput.txt b/consoleInput.txt index 85b6992..fc0fde2 100644 --- a/consoleInput.txt +++ b/consoleInput.txt @@ -2,7 +2,12 @@ Dokumentation Befehle für Konsole mvn exec:java -Dexec.mainClass="vs.SyslogServer" > startet den SyslogServer +> Strg + C um Server im Terminal aus Endlosschleife zu beenden -echo "test" | nc -u 127.0.0.1 5514 -> Test ob Server auf dem Port 5514 aktiv zuhört; True --> "Nachricht empfangen!" +echo "test" | nc -u -w1 127.0.0.1 5514 +> Test ob Server auf dem Port 5514 aktiv zuhört und Nachricht korrekt ankommt +> w1 damit nach einer Sekunde beendet wird, netcat (nc) wartet bei UDP manchmal auf eine Antwort + +python3 -c "print('A'*600)" | nc -u -w1 127.0.0.1 5514 +> Test Maximallänge überschritten diff --git a/src/main/java/vs/SyslogServer.java b/src/main/java/vs/SyslogServer.java index 7ead3d4..025443e 100644 --- a/src/main/java/vs/SyslogServer.java +++ b/src/main/java/vs/SyslogServer.java @@ -14,9 +14,13 @@ public class SyslogServer { server.start(port); } + private static final int MAX_MESSAGE_SIZE = 480; + public void start(int port) { + System.out.println("Syslog Server started on port " + port); + try{ // Create a DatagramSocket to listen for incoming messages DatagramSocket socket = new DatagramSocket(port); @@ -32,6 +36,12 @@ public class SyslogServer { // Extract the message from the packet + data; how many bytes were actually received int length = packet.getLength(); + + + if (length > MAX_MESSAGE_SIZE) { + System.err.println("Received message exceeds maximum allowed size of " + MAX_MESSAGE_SIZE + " bytes. Message will be ignored."); + continue; // Skip processing this message + } String message = new String( packet.getData(), // complete byte array be aware: packet.getData() returns the entire buffer, not just the received data