From 98b40a1f09cc59c686898602bbf7a5a46441b111 Mon Sep 17 00:00:00 2001 From: Kathrin Trinh Date: Tue, 10 Feb 2026 14:44:16 +0100 Subject: [PATCH 01/40] Initial commit med all kod (#16) Add ci workflow for github actions. --- .github/workflows/ci.yml | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 .github/workflows/ci.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 00000000..9610edff --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,32 @@ +name: Java CI with Maven + +on: + push: + branches: [ "main" ] + pull_request: + branches: [ "main" ] + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + + - name: Get Java Version + run: | + JAVA_VERSION=$(mvn help:evaluate "-Dexpression=maven.compiler.release" -q -DforceStdout) + echo "JAVA_VERSION=$JAVA_VERSION" >> $GITHUB_ENV + + - name: Set up JDK ${{ env.JAVA_VERSION }} + uses: actions/setup-java@v4 + with: + java-version: ${{ env.JAVA_VERSION }} + distribution: 'temurin' + cache: maven + + - name: Compile with Maven + run: mvn -B compile --file pom.xml + + - name: Test with Maven + run: mvn -B test --file pom.xml \ No newline at end of file From c1b5f7009a6f2b19dcf63ea965bf44efd5453d7a Mon Sep 17 00:00:00 2001 From: Ebba Andersson Date: Tue, 10 Feb 2026 14:45:46 +0100 Subject: [PATCH 02/40] build: configure pom.xml with needed plugin/tools. (#19) * build: configure pom.xml with needed plugin/tools. Setup Java 25 environment with JUnit 5, Mockito, JaCoCo, Pitest, and Spotless * fix: add missing test scope for awaitility --- pom.xml | 48 +++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 47 insertions(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 6b7ade11..bb03ce76 100644 --- a/pom.xml +++ b/pom.xml @@ -9,12 +9,13 @@ 1.0-SNAPSHOT - 23 + 25 UTF-8 6.0.2 3.27.7 5.21.0 + org.junit.jupiter @@ -28,12 +29,24 @@ ${assertj.core.version} test + + org.mockito + mockito-core + ${mockito.version} + test + org.mockito mockito-junit-jupiter ${mockito.version} test + + org.awaitility + awaitility + 4.3.0 + test + @@ -118,6 +131,39 @@ + + org.pitest + pitest-maven + 1.22.0 + + + org.pitest + pitest-junit5-plugin + 1.2.2 + + + + + com.diffplug.spotless + spotless-maven-plugin + 3.2.1 + + + + + + + + + verify + + + check + + + + + From bf4d977cb9a4b722cfc7f56f168a6afb0b78d1b4 Mon Sep 17 00:00:00 2001 From: Kathrin Trinh Date: Tue, 10 Feb 2026 15:14:19 +0100 Subject: [PATCH 03/40] =?UTF-8?q?Initial=20commit=20f=C3=B6r=20tcp-server?= =?UTF-8?q?=20(#17)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/org/example/App.java | 4 ++-- src/main/java/org/example/TcpServer.java | 28 ++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 2 deletions(-) create mode 100644 src/main/java/org/example/TcpServer.java diff --git a/src/main/java/org/example/App.java b/src/main/java/org/example/App.java index 165e5cd5..66c9af10 100644 --- a/src/main/java/org/example/App.java +++ b/src/main/java/org/example/App.java @@ -2,6 +2,6 @@ public class App { public static void main(String[] args) { - System.out.println("Hello There!"); + new TcpServer(8080).start(); } -} +} \ No newline at end of file diff --git a/src/main/java/org/example/TcpServer.java b/src/main/java/org/example/TcpServer.java new file mode 100644 index 00000000..73ba0f27 --- /dev/null +++ b/src/main/java/org/example/TcpServer.java @@ -0,0 +1,28 @@ +package org.example; + +import java.io.IOException; +import java.net.ServerSocket; +import java.net.Socket; + +public class TcpServer { + + private final int port; + + public TcpServer(int port) { + this.port = port; + } + + public void start() { + System.out.println("Starting TCP server on port " + port); + + try (ServerSocket serverSocket = new ServerSocket(port)) { + while (true) { + Socket clientSocket = serverSocket.accept(); // block + System.out.println("Client connected: " + clientSocket.getRemoteSocketAddress()); + clientSocket.close(); + } + } catch (IOException e) { + throw new RuntimeException("Failed to start TCP server", e); + } + } +} \ No newline at end of file From 148411e2d8dda4936f543fbd7a9e74efff668026 Mon Sep 17 00:00:00 2001 From: Elias Lennheimer <47382348+Xeutos@users.noreply.github.com> Date: Tue, 10 Feb 2026 15:33:02 +0100 Subject: [PATCH 04/40] Issue #12 (#21) * release.yml that builds and publishes Docker image to GitHub packages on release. * Fixed unverified commit stopping pull request from being merged --- .github/workflows/release.yml | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 .github/workflows/release.yml diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 00000000..b86973f7 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,35 @@ +name: Publish Docker Image to Github Packages on Release +on: + release: + types: + - published +jobs: + publish: + runs-on: ubuntu-latest + permissions: + contents: read + packages: write + steps: + - uses: actions/checkout@v6.0.2 + - uses: docker/setup-qemu-action@v3.7.0 + - uses: docker/setup-buildx-action@v3.12.0 + - name: Log in to GHCR + uses: docker/login-action@v3.7.0 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + - name: Extract metadata + id: meta + uses: docker/metadata-action@v5.10.0 + with: + images: ghcr.io/ithsjava25/webserver + - name: Build and push + uses: docker/build-push-action@v6.18.0 + with: + context: . + push: true + platforms: linux/amd64, linux/arm64 + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + From 9ac7b57f283f45290547bf776c9f2a28a1f0c92b Mon Sep 17 00:00:00 2001 From: Elias Lennheimer <47382348+Xeutos@users.noreply.github.com> Date: Wed, 11 Feb 2026 08:55:53 +0100 Subject: [PATCH 05/40] Feature/docker image builder issue#11 (#25) * Dockerfile that builds an image in a docker container then runs in another docker container Current implementation uses Temporary App.class reference before relevant file is created to start server. * Fixed unverified commit * Set up non-root user and updated Dockerfile to use user. Fixed file path to use /app/ instead of /app/org/example to prevent unnessary nesting of packages. --- Dockerfile | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 Dockerfile diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..d8b69012 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,11 @@ +FROM maven:3-eclipse-temurin-25-alpine AS build +WORKDIR /build +COPY src/ src/ +COPY pom.xml pom.xml +RUN mvn compile + +FROM eclipse-temurin:25-jre-alpine +RUN addgroup -S appgroup && adduser -S appuser -G appgroup +COPY --from=build /build/target/classes/ /app/ +ENTRYPOINT ["java", "-classpath", "/app", "org.example.App"] +USER appuser From 875d1efeb26a36aa6b6d723f5dad99a7f25f7732 Mon Sep 17 00:00:00 2001 From: Felix Eriksson Date: Wed, 11 Feb 2026 13:01:37 +0100 Subject: [PATCH 06/40] Feature/http parse headers (#18) * added parser class for headers * refactoring * refactoring * refactoring, added getHeadersMap * refactoring * refactoring code, adding debug boolean * added unit tests for HttpParser.java class * refactoring and all green tests for class * refactoring the code * refactoring the bufferedReader * refactoring with coderabbit feedback for header put to merge * refactoring with coderabbit feedback for header put to merge, changed headersmap * refactoring from reviewer input * refactoring for code rabbit comments --- .../org/example/httpparser/HttpParser.java | 49 +++++++++++++++++ .../example/httpparser/HttpParserTest.java | 52 +++++++++++++++++++ 2 files changed, 101 insertions(+) create mode 100644 src/main/java/org/example/httpparser/HttpParser.java create mode 100644 src/test/java/org/example/httpparser/HttpParserTest.java diff --git a/src/main/java/org/example/httpparser/HttpParser.java b/src/main/java/org/example/httpparser/HttpParser.java new file mode 100644 index 00000000..0c27d34a --- /dev/null +++ b/src/main/java/org/example/httpparser/HttpParser.java @@ -0,0 +1,49 @@ +package org.example.httpparser; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.nio.charset.StandardCharsets; +import java.util.HashMap; +import java.util.Map; + +public class HttpParser { + private boolean debug = false; + private Map headersMap = new HashMap<>(); + private BufferedReader reader; + public void parseHttp(InputStream in) throws IOException { + if (this.reader == null) { + this.reader = new BufferedReader(new InputStreamReader(in, StandardCharsets.UTF_8)); + } + + String headerLine; + + while ((headerLine = reader.readLine()) != null) { + if (headerLine.isEmpty()) { + break; + } + + int valueSeparator = headerLine.indexOf(':'); + if (valueSeparator <= 0) { + continue; + } + + String key = headerLine.substring(0, valueSeparator).trim(); + String value = headerLine.substring(valueSeparator + 1).trim(); + + headersMap.merge(key, value, (existing, incoming) -> existing +", " + incoming); + } + if (debug) { + System.out.println("Host: " + headersMap.get("Host")); + for (String key : headersMap.keySet()) { + System.out.println(key + ": " + headersMap.get(key)); + } + } + } + + public Map getHeadersMap() { + return headersMap; + } + +} diff --git a/src/test/java/org/example/httpparser/HttpParserTest.java b/src/test/java/org/example/httpparser/HttpParserTest.java new file mode 100644 index 00000000..91a5af38 --- /dev/null +++ b/src/test/java/org/example/httpparser/HttpParserTest.java @@ -0,0 +1,52 @@ +package org.example.httpparser; + +import org.junit.jupiter.api.Test; + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.nio.charset.StandardCharsets; + + +import static org.assertj.core.api.AssertionsForClassTypes.assertThat; +import static org.junit.jupiter.api.Assertions.*; + +class HttpParserTest { + private HttpParser httpParser = new HttpParser(); + + @Test + void TestHttpParserForHeaders() throws IOException { + String testInput = "GET /index.html HTTP/1.1\r\nHost: localhost\r\nContent-Type: text/plain\r\nUser-Agent: JUnit5\r\n\r\n"; + InputStream in = new ByteArrayInputStream(testInput.getBytes(StandardCharsets.UTF_8)); + + httpParser.parseHttp(in); + + assertNotNull(httpParser.getHeadersMap()); + assertThat(httpParser.getHeadersMap().size()).isEqualTo(3); + assertThat(httpParser.getHeadersMap().get("Host")).contains("localhost"); + assertThat(httpParser.getHeadersMap().get("Content-Type")).contains("text/plain"); + assertThat(httpParser.getHeadersMap().get("User-Agent")).contains("JUnit5"); + } + + @Test + void testParseHttp_EmptyInput() throws IOException { + InputStream in = new ByteArrayInputStream("".getBytes()); + httpParser.parseHttp(in); + + assertTrue(httpParser.getHeadersMap().isEmpty()); + } + + @Test + void testParseHttp_InvalidHeaderLine() throws IOException { + String rawInput = "Host: localhost\r\n InvalidLineWithoutColon\r\n Accept: */*\r\n\r\n"; + + InputStream in = new ByteArrayInputStream(rawInput.getBytes(StandardCharsets.UTF_8)); + httpParser.parseHttp(in); + + assertEquals(2, httpParser.getHeadersMap().size()); + assertEquals("localhost", httpParser.getHeadersMap().get("Host")); + assertEquals("*/*", httpParser.getHeadersMap().get("Accept")); + } + + +} From 9289c7d5e113976278b870c8e0dfc088b09c7109 Mon Sep 17 00:00:00 2001 From: JohanHiths Date: Wed, 11 Feb 2026 13:28:51 +0100 Subject: [PATCH 07/40] Feature/http response builder (#24) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add HttpResponseBuilder and its tests Signed-off-by: JohanHiths * Implement minimal HTTP response builder Signed-off-by: JohanHiths * update coderabbit * more coderabbit fixes Signed-off-by: JohanHiths * Bytte från httptest till http efter rekommendationer från Xeutos * code rabbit fix * fixed more code rabbit problems --------- Signed-off-by: JohanHiths --- .../org/example/http/HttpResponseBuilder.java | 50 +++++++++++++++++++ .../example/http/HttpResponseBuilderTest.java | 45 +++++++++++++++++ 2 files changed, 95 insertions(+) create mode 100644 src/main/java/org/example/http/HttpResponseBuilder.java create mode 100644 src/test/java/org/example/http/HttpResponseBuilderTest.java diff --git a/src/main/java/org/example/http/HttpResponseBuilder.java b/src/main/java/org/example/http/HttpResponseBuilder.java new file mode 100644 index 00000000..eb1f77ea --- /dev/null +++ b/src/main/java/org/example/http/HttpResponseBuilder.java @@ -0,0 +1,50 @@ +package org.example.http; +// +import java.nio.charset.StandardCharsets; +import java.util.LinkedHashMap; +import java.util.Map; + +public class HttpResponseBuilder { + + private static final String PROTOCOL = "HTTP/1.1"; + private int statusCode = 200; + private String body = ""; + private Map headers = new LinkedHashMap<>(); + + private static final String CRLF = "\r\n"; + + + public void setStatusCode(int statusCode) { + this.statusCode = statusCode; + } + + public void setBody(String body) { + this.body = body != null ? body : ""; + } + public void setHeaders(Map headers) { + this.headers = new LinkedHashMap<>(headers); + } + + private static final Map REASON_PHRASES = Map.of( + 200, "OK", + 201, "Created", + 400, "Bad Request", + 404, "Not Found", + 500, "Internal Server Error"); + + public String build(){ + StringBuilder sb = new StringBuilder(); + String reason = REASON_PHRASES.getOrDefault(statusCode, "OK"); + sb.append(PROTOCOL).append(" ").append(statusCode).append(" ").append(reason).append(CRLF); + headers.forEach((k,v) -> sb.append(k).append(": ").append(v).append(CRLF)); + sb.append("Content-Length: ") + .append(body.getBytes(StandardCharsets.UTF_8).length); + sb.append(CRLF); + sb.append("Connection: close").append(CRLF); + sb.append(CRLF); + sb.append(body); + return sb.toString(); + + } + +} diff --git a/src/test/java/org/example/http/HttpResponseBuilderTest.java b/src/test/java/org/example/http/HttpResponseBuilderTest.java new file mode 100644 index 00000000..8b80a7f8 --- /dev/null +++ b/src/test/java/org/example/http/HttpResponseBuilderTest.java @@ -0,0 +1,45 @@ +package org.example.http; + +import org.junit.jupiter.api.Test; + +import static org.assertj.core.api.AssertionsForClassTypes.assertThat; + + class HttpResponseBuilderTest { + + /** + * Verifies that build produces a valid HTTP response string! + * Status line is present + * Content-Length header is generated + * The response body is included + */ + + @Test + void build_returnsValidHttpResponse() { + + HttpResponseBuilder builder = new HttpResponseBuilder(); + + builder.setBody("Hello"); + + String result = builder.build(); + + assertThat(result).contains("HTTP/1.1 200 OK"); + assertThat(result).contains("Content-Length: 5"); + assertThat(result).contains("\r\n\r\n"); + assertThat(result).contains("Hello"); + + } + + // Verifies that Content-Length is calculated using UTF-8 byte length! + // + @Test + void build_handlesUtf8ContentLength() { + HttpResponseBuilder builder = new HttpResponseBuilder(); + + builder.setBody("å"); + + String result = builder.build(); + + assertThat(result).contains("Content-Length: 2"); + + } +} From 6bdb1ef3376b5102baf66b07350f55945c7b8b0b Mon Sep 17 00:00:00 2001 From: Felix Eriksson Date: Wed, 11 Feb 2026 14:31:37 +0100 Subject: [PATCH 08/40] Feature/http parse request line (#20) * added parser class for headers * refactoring * refactoring * refactoring, added getHeadersMap * refactoring * adding class for parsing requestLine (method, path, version). Has getters/setters for the three. * refactoring code, private setters * added tests for throwing error * refactoring the bufferedReader * refactoring, adding check for requestLineArray.length() is less or equals to two with added unit test * refactoring, adding check for requestLineArray.length() is less or equals to two with added unit test * refactoring, adding test for null value of input stream * refactoring from coderabbit input * refactoring test class. * refactoring, adding debug boolean flag for logger lines * refactoring and testing buffered reader stream * refactoring, changed class HttpParser.java to extend HttpParseRequestLine.java and making them share the same buffered reader. Added method to set the reader and then methods to call the HttpParser * refactoring, changed class HttpParser.java to extend HttpParseRequestLine.java and making them share the same buffered reader. Added method to set the reader and then methods to call the HttpParser --- .../httpparser/HttpParseRequestLine.java | 66 +++++++++++++++++ .../org/example/httpparser/HttpParser.java | 15 +++- .../httpparser/HttpParseRequestLineTest.java | 73 +++++++++++++++++++ .../example/httpparser/HttpParserTest.java | 13 ++-- 4 files changed, 159 insertions(+), 8 deletions(-) create mode 100644 src/main/java/org/example/httpparser/HttpParseRequestLine.java create mode 100644 src/test/java/org/example/httpparser/HttpParseRequestLineTest.java diff --git a/src/main/java/org/example/httpparser/HttpParseRequestLine.java b/src/main/java/org/example/httpparser/HttpParseRequestLine.java new file mode 100644 index 00000000..cb97f838 --- /dev/null +++ b/src/main/java/org/example/httpparser/HttpParseRequestLine.java @@ -0,0 +1,66 @@ +package org.example.httpparser; + +import java.io.BufferedReader; +import java.io.IOException; +import java.util.logging.Logger; + +abstract class HttpParseRequestLine { + private String method; + private String uri; + private String version; + private boolean debug = false; + private static final Logger logger = Logger.getLogger(HttpParseRequestLine.class.getName()); + + public void parseHttpRequest(BufferedReader br) throws IOException { + BufferedReader reader = br; + String requestLine = reader.readLine(); + if (requestLine == null || requestLine.isEmpty()) { + throw new IOException("HTTP Request Line is Null or Empty"); + } + + String[] requestLineArray = requestLine.trim().split(" ", 3); + + if (requestLineArray.length <= 2) { + throw new IOException("HTTP Request Line is not long enough"); + } else { + setMethod(requestLineArray[0]); + if (!getMethod().matches("^[A-Z]+$")){ + throw new IOException("Invalid HTTP method"); + } + setUri(requestLineArray[1]); + setVersion(requestLineArray[2]); + } + + if(debug) { + logger.info(getMethod()); + logger.info(getUri()); + logger.info(getVersion()); + } + } + + + + public String getMethod() { + return method; + } + + private void setMethod(String method) { + this.method = method; + } + + public String getUri() { + return uri; + } + + private void setUri(String uri) { + this.uri = uri; + } + + public String getVersion() { + return version; + } + + private void setVersion(String version) { + this.version = version; + } +} diff --git a/src/main/java/org/example/httpparser/HttpParser.java b/src/main/java/org/example/httpparser/HttpParser.java index 0c27d34a..440d2cff 100644 --- a/src/main/java/org/example/httpparser/HttpParser.java +++ b/src/main/java/org/example/httpparser/HttpParser.java @@ -8,15 +8,18 @@ import java.util.HashMap; import java.util.Map; -public class HttpParser { +public class HttpParser extends HttpParseRequestLine { private boolean debug = false; private Map headersMap = new HashMap<>(); private BufferedReader reader; - public void parseHttp(InputStream in) throws IOException { + + protected void setReader(InputStream in) { if (this.reader == null) { this.reader = new BufferedReader(new InputStreamReader(in, StandardCharsets.UTF_8)); } + } + public void parseHttp() throws IOException { String headerLine; while ((headerLine = reader.readLine()) != null) { @@ -42,8 +45,16 @@ public void parseHttp(InputStream in) throws IOException { } } + + public void parseRequest() throws IOException { + parseHttpRequest(reader); + } + public Map getHeadersMap() { return headersMap; } + public BufferedReader getHeaderReader() { + return reader; + } } diff --git a/src/test/java/org/example/httpparser/HttpParseRequestLineTest.java b/src/test/java/org/example/httpparser/HttpParseRequestLineTest.java new file mode 100644 index 00000000..8ff289f3 --- /dev/null +++ b/src/test/java/org/example/httpparser/HttpParseRequestLineTest.java @@ -0,0 +1,73 @@ +package org.example.httpparser; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import java.io.*; + +import static org.assertj.core.api.AssertionsForClassTypes.assertThat; +import static org.assertj.core.api.AssertionsForClassTypes.assertThatThrownBy; +import static org.junit.jupiter.api.Assertions.*; + +class HttpParseRequestLineTest { + private HttpParser httpParseRequestLine; + + @BeforeEach + void setUp() { + httpParseRequestLine = new HttpParser(); + } + + @Test + void testParserWithTestRequestLine() throws IOException { + String testString = "GET / HTTP/1.1"; + + InputStream in = new ByteArrayInputStream(testString.getBytes()); + httpParseRequestLine.setReader(in); + httpParseRequestLine.parseRequest(); + + assertThat(httpParseRequestLine.getMethod()).isEqualTo("GET"); + assertThat(httpParseRequestLine.getUri()).isEqualTo("/"); + assertThat(httpParseRequestLine.getVersion()).isEqualTo("HTTP/1.1"); + } + + @Test + void testParserThrowErrorWhenNull(){ + assertThatThrownBy(() -> httpParseRequestLine.setReader(null)).isInstanceOf(NullPointerException.class); + } + + + @Test + void testParserThrowErrorWhenEmpty(){ + InputStream in = new ByteArrayInputStream("".getBytes()); + httpParseRequestLine.setReader(in); + Exception exception = assertThrows( + IOException.class, () -> httpParseRequestLine.parseRequest() + ); + + assertThat(exception.getMessage()).isEqualTo("HTTP Request Line is Null or Empty"); + } + + @Test + void testParserThrowErrorWhenMethodIsInvalid(){ + String testString = "get / HTTP/1.1"; + InputStream in = new ByteArrayInputStream(testString.getBytes()); + httpParseRequestLine.setReader(in); + Exception exception = assertThrows( + IOException.class, () -> httpParseRequestLine.parseRequest() + ); + assertThat(exception.getMessage()).isEqualTo("Invalid HTTP method"); + } + + @Test + void testParserThrowErrorWhenArrayLengthLessOrEqualsTwo(){ + String testString = "GET / "; + InputStream in = new ByteArrayInputStream(testString.getBytes()); + httpParseRequestLine.setReader(in); + Exception exception = assertThrows( + IOException.class, () -> httpParseRequestLine.parseRequest() + ); + + assertThat(exception.getMessage()).isEqualTo("HTTP Request Line is not long enough"); + } + +} diff --git a/src/test/java/org/example/httpparser/HttpParserTest.java b/src/test/java/org/example/httpparser/HttpParserTest.java index 91a5af38..a09b7e22 100644 --- a/src/test/java/org/example/httpparser/HttpParserTest.java +++ b/src/test/java/org/example/httpparser/HttpParserTest.java @@ -2,9 +2,7 @@ import org.junit.jupiter.api.Test; -import java.io.ByteArrayInputStream; -import java.io.IOException; -import java.io.InputStream; +import java.io.*; import java.nio.charset.StandardCharsets; @@ -19,7 +17,8 @@ void TestHttpParserForHeaders() throws IOException { String testInput = "GET /index.html HTTP/1.1\r\nHost: localhost\r\nContent-Type: text/plain\r\nUser-Agent: JUnit5\r\n\r\n"; InputStream in = new ByteArrayInputStream(testInput.getBytes(StandardCharsets.UTF_8)); - httpParser.parseHttp(in); + httpParser.setReader(in); + httpParser.parseHttp(); assertNotNull(httpParser.getHeadersMap()); assertThat(httpParser.getHeadersMap().size()).isEqualTo(3); @@ -31,7 +30,8 @@ void TestHttpParserForHeaders() throws IOException { @Test void testParseHttp_EmptyInput() throws IOException { InputStream in = new ByteArrayInputStream("".getBytes()); - httpParser.parseHttp(in); + httpParser.setReader(in); + httpParser.parseHttp(); assertTrue(httpParser.getHeadersMap().isEmpty()); } @@ -41,7 +41,8 @@ void testParseHttp_InvalidHeaderLine() throws IOException { String rawInput = "Host: localhost\r\n InvalidLineWithoutColon\r\n Accept: */*\r\n\r\n"; InputStream in = new ByteArrayInputStream(rawInput.getBytes(StandardCharsets.UTF_8)); - httpParser.parseHttp(in); + httpParser.setReader(in); + httpParser.parseHttp(); assertEquals(2, httpParser.getHeadersMap().size()); assertEquals("localhost", httpParser.getHeadersMap().get("Host")); From 781e34a5de2f4737a8a0234f1de4b622f0700579 Mon Sep 17 00:00:00 2001 From: Gabriela Aguirre Date: Wed, 11 Feb 2026 15:24:26 +0100 Subject: [PATCH 09/40] Add Bucket4j dependency in pom file (#40) * Add Bucket4j dependency in pom file * Extract Bucket4j version into a property and update version in dependency for consistency --- pom.xml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/pom.xml b/pom.xml index bb03ce76..06adea9e 100644 --- a/pom.xml +++ b/pom.xml @@ -14,9 +14,16 @@ 6.0.2 3.27.7 5.21.0 + 8.14.0 + + + com.bucket4j + bucket4j_jdk17-core + ${bucket4j.version} + org.junit.jupiter junit-jupiter From 511b5eef9de4c3b49af24ecb79272142d3dd8a25 Mon Sep 17 00:00:00 2001 From: Caroline Nordbrandt Date: Thu, 12 Feb 2026 10:57:11 +0100 Subject: [PATCH 10/40] Add support for serving static files (#42) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add support for serving static files - Introduced `StaticFileHandler` to serve static files from the `www` directory. - Enhanced `HttpResponseBuilder` to support byte array bodies. - Made `setReader` method public in `HttpParser` to improve flexibility. - Code tested via Insomnia by coding a temporary method for multithreads in TcpServer.java, this is now removed before future implementations of ConnectionHandler Co-authored-by: Daniel Fahlén xsz300@gmail.com * Fix typo in `HttpResponseBuilder` (contentLength) and refine body handling logic Co-authored-by: Daniel Fahlén xsz300@gmail.com * Add basic HTML structure to `index.html` in `www` directory * Make `handleGetRequest` method private in `StaticFileHandler` to encapsulate functionality --- .../java/org/example/StaticFileHandler.java | 34 +++++++++++++++++++ .../org/example/http/HttpResponseBuilder.java | 18 ++++++++-- .../org/example/httpparser/HttpParser.java | 2 +- www/index.html | 12 +++++++ 4 files changed, 62 insertions(+), 4 deletions(-) create mode 100644 src/main/java/org/example/StaticFileHandler.java create mode 100644 www/index.html diff --git a/src/main/java/org/example/StaticFileHandler.java b/src/main/java/org/example/StaticFileHandler.java new file mode 100644 index 00000000..56efc1ed --- /dev/null +++ b/src/main/java/org/example/StaticFileHandler.java @@ -0,0 +1,34 @@ +package org.example; + +import org.example.http.HttpResponseBuilder; + +import java.io.File; +import java.io.IOException; +import java.io.OutputStream; +import java.io.PrintWriter; +import java.nio.file.Files; +import java.util.Map; + +public class StaticFileHandler { + private static final String WEB_ROOT = "www"; + private byte[] fileBytes; + + public StaticFileHandler(){} + + private void handleGetRequest(String uri) throws IOException { + + File file = new File(WEB_ROOT, uri); + fileBytes = Files.readAllBytes(file.toPath()); + } + + public void sendGetRequest(OutputStream outputStream, String uri) throws IOException{ + handleGetRequest(uri); + HttpResponseBuilder response = new HttpResponseBuilder(); + response.setHeaders(Map.of("Content-Type", "text/html; charset=utf-8")); + response.setBody(fileBytes); + PrintWriter writer = new PrintWriter(outputStream, true); + writer.println(response.build()); + + } + +} diff --git a/src/main/java/org/example/http/HttpResponseBuilder.java b/src/main/java/org/example/http/HttpResponseBuilder.java index eb1f77ea..afaafcf9 100644 --- a/src/main/java/org/example/http/HttpResponseBuilder.java +++ b/src/main/java/org/example/http/HttpResponseBuilder.java @@ -9,6 +9,7 @@ public class HttpResponseBuilder { private static final String PROTOCOL = "HTTP/1.1"; private int statusCode = 200; private String body = ""; + private byte[] bytebody; private Map headers = new LinkedHashMap<>(); private static final String CRLF = "\r\n"; @@ -17,10 +18,13 @@ public class HttpResponseBuilder { public void setStatusCode(int statusCode) { this.statusCode = statusCode; } - public void setBody(String body) { this.body = body != null ? body : ""; } + + public void setBody(byte[] body) { + this.bytebody = body; + } public void setHeaders(Map headers) { this.headers = new LinkedHashMap<>(headers); } @@ -31,14 +35,22 @@ public void setHeaders(Map headers) { 400, "Bad Request", 404, "Not Found", 500, "Internal Server Error"); - public String build(){ StringBuilder sb = new StringBuilder(); + int contentLength; + if(body.isEmpty() && bytebody != null){ + contentLength = bytebody.length; + setBody(new String(bytebody, StandardCharsets.UTF_8)); + }else{ + contentLength = body.getBytes(StandardCharsets.UTF_8).length; + } + + String reason = REASON_PHRASES.getOrDefault(statusCode, "OK"); sb.append(PROTOCOL).append(" ").append(statusCode).append(" ").append(reason).append(CRLF); headers.forEach((k,v) -> sb.append(k).append(": ").append(v).append(CRLF)); sb.append("Content-Length: ") - .append(body.getBytes(StandardCharsets.UTF_8).length); + .append(contentLength); sb.append(CRLF); sb.append("Connection: close").append(CRLF); sb.append(CRLF); diff --git a/src/main/java/org/example/httpparser/HttpParser.java b/src/main/java/org/example/httpparser/HttpParser.java index 440d2cff..d08a000b 100644 --- a/src/main/java/org/example/httpparser/HttpParser.java +++ b/src/main/java/org/example/httpparser/HttpParser.java @@ -13,7 +13,7 @@ public class HttpParser extends HttpParseRequestLine { private Map headersMap = new HashMap<>(); private BufferedReader reader; - protected void setReader(InputStream in) { + public void setReader(InputStream in) { if (this.reader == null) { this.reader = new BufferedReader(new InputStreamReader(in, StandardCharsets.UTF_8)); } diff --git a/www/index.html b/www/index.html new file mode 100644 index 00000000..8293c074 --- /dev/null +++ b/www/index.html @@ -0,0 +1,12 @@ + + + + + Welcome + + +

Website works!

+

Greetings from StaticFileHandler.

+ + + From aaeba6dcad1f725ce89fe5d8b39908b8e1949e63 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Mohl=C3=A9n?= Date: Thu, 12 Feb 2026 13:13:01 +0100 Subject: [PATCH 11/40] Updates pom.xml, with jackson-dependencies, for config file (#48) * Updates pom.xml, with jackson-dependencies, for config file * Updates pom.xml, removes jackson-annotations:2.20, because it was apparently unnecessary. --- pom.xml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/pom.xml b/pom.xml index 06adea9e..8a82b235 100644 --- a/pom.xml +++ b/pom.xml @@ -54,6 +54,18 @@ 4.3.0 test
+ + + tools.jackson.core + jackson-databind + 3.0.3 + + + tools.jackson.dataformat + jackson-dataformat-yaml + 3.0.3 + +
From 524f33c821d74407124fe4ab09df3ac199666f33 Mon Sep 17 00:00:00 2001 From: Daniel E Fahlen <229072997+donne41@users.noreply.github.com> Date: Thu, 12 Feb 2026 13:24:09 +0100 Subject: [PATCH 12/40] * Move HTTP handling to a dedicated ConnectionHandler (#50) * * Move HTTP handling logic from TcpServer to a dedicated ConnectionTask class * Implement virtual thread execution for better scalability * Add regex-based URI routing to support clean URLs and default to index.html * Ensure sockets are properly closed Co-authored-by: Caroline Nordbrandt * change thrown exception to runtime instead with appropiet message in tcpServer. --------- Co-authored-by: Caroline Nordbrandt --- .../java/org/example/ConnectionHandler.java | 42 +++++++++++++++++++ .../java/org/example/StaticFileHandler.java | 1 + src/main/java/org/example/TcpServer.java | 12 +++++- 3 files changed, 53 insertions(+), 2 deletions(-) create mode 100644 src/main/java/org/example/ConnectionHandler.java diff --git a/src/main/java/org/example/ConnectionHandler.java b/src/main/java/org/example/ConnectionHandler.java new file mode 100644 index 00000000..1a0861ff --- /dev/null +++ b/src/main/java/org/example/ConnectionHandler.java @@ -0,0 +1,42 @@ +package org.example; + +import org.example.httpparser.HttpParser; + +import java.io.IOException; +import java.net.Socket; + +public class ConnectionHandler implements AutoCloseable { + + Socket client; + String uri; + + public ConnectionHandler(Socket client) { + this.client = client; + } + + public void runConnectionHandler() throws IOException { + StaticFileHandler sfh = new StaticFileHandler(); + HttpParser parser = new HttpParser(); + parser.setReader(client.getInputStream()); + parser.parseRequest(); + parser.parseHttp(); + resolveTargetFile(parser.getUri()); + sfh.sendGetRequest(client.getOutputStream(), uri); + } + + private void resolveTargetFile(String uri) { + if (uri.matches("/$")) { //matches(/) + this.uri = "index.html"; + } else if (uri.matches("^(?!.*\\.html$).*$")) { + this.uri = uri.concat(".html"); + } else { + this.uri = uri; + } + + } + + @Override + public void close() throws Exception { + client.close(); + } +} diff --git a/src/main/java/org/example/StaticFileHandler.java b/src/main/java/org/example/StaticFileHandler.java index 56efc1ed..95a0b424 100644 --- a/src/main/java/org/example/StaticFileHandler.java +++ b/src/main/java/org/example/StaticFileHandler.java @@ -19,6 +19,7 @@ private void handleGetRequest(String uri) throws IOException { File file = new File(WEB_ROOT, uri); fileBytes = Files.readAllBytes(file.toPath()); + } public void sendGetRequest(OutputStream outputStream, String uri) throws IOException{ diff --git a/src/main/java/org/example/TcpServer.java b/src/main/java/org/example/TcpServer.java index 73ba0f27..3f96b4d8 100644 --- a/src/main/java/org/example/TcpServer.java +++ b/src/main/java/org/example/TcpServer.java @@ -19,10 +19,18 @@ public void start() { while (true) { Socket clientSocket = serverSocket.accept(); // block System.out.println("Client connected: " + clientSocket.getRemoteSocketAddress()); - clientSocket.close(); + Thread.ofVirtual().start(() -> handleClient(clientSocket)); } } catch (IOException e) { throw new RuntimeException("Failed to start TCP server", e); } } -} \ No newline at end of file + + private void handleClient(Socket client) { + try (ConnectionHandler connectionHandler = new ConnectionHandler(client)) { + connectionHandler.runConnectionHandler(); + } catch (Exception e) { + throw new RuntimeException("Error handling client connection " + e); + } + } +} From 8cc69d8c31686e82d74c71925a34aba8f787c0b6 Mon Sep 17 00:00:00 2001 From: Martin Stenhagen Date: Tue, 17 Feb 2026 14:12:27 +0100 Subject: [PATCH 13/40] Feature/13 implement config file (#22) * Added basic YAML config-file. * Added class ConfigLoader with static classes for encapsulation * Added static metod loadOnce and step one of static method load * Added static method createMapperFor that checks for YAML or JSON-files before creating an ObjectMapper object. * implement ConfigLoader refs #13 * Added AppConfig.java record for config after coderabbit feedback * Updated ConfigLoader to use AppConfig record and jackson 3 * Added tests for ConfigLoader and reset cached method in ConfigLoader to ensure test isolation with static cache * Removed unused dependency. Minor readability tweaks in AppConfig. * Added check for illegal port numbers to withDefaultsApplied-method. * Added test for illegal port numbers. --- .../java/org/example/config/AppConfig.java | 53 +++++++ .../java/org/example/config/ConfigLoader.java | 71 +++++++++ src/main/resources/application.yml | 6 + .../org/example/config/ConfigLoaderTest.java | 141 ++++++++++++++++++ 4 files changed, 271 insertions(+) create mode 100644 src/main/java/org/example/config/AppConfig.java create mode 100644 src/main/java/org/example/config/ConfigLoader.java create mode 100644 src/main/resources/application.yml create mode 100644 src/test/java/org/example/config/ConfigLoaderTest.java diff --git a/src/main/java/org/example/config/AppConfig.java b/src/main/java/org/example/config/AppConfig.java new file mode 100644 index 00000000..00134b20 --- /dev/null +++ b/src/main/java/org/example/config/AppConfig.java @@ -0,0 +1,53 @@ +package org.example.config; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public record AppConfig( + @JsonProperty("server") ServerConfig server, + @JsonProperty("logging") LoggingConfig logging +) { + public static AppConfig defaults() { + return new AppConfig(ServerConfig.defaults(), LoggingConfig.defaults()); + } + + public AppConfig withDefaultsApplied() { + ServerConfig serverConfig = (server == null ? ServerConfig.defaults() : server.withDefaultsApplied()); + LoggingConfig loggingConfig = (logging == null ? LoggingConfig.defaults() : logging.withDefaultsApplied()); + return new AppConfig(serverConfig, loggingConfig); + } + + @JsonIgnoreProperties(ignoreUnknown = true) + public record ServerConfig( + @JsonProperty("port") Integer port, + @JsonProperty("rootDir") String rootDir + ) { + public static ServerConfig defaults() { + return new ServerConfig(8080, "./www"); + } + + public ServerConfig withDefaultsApplied() { + int p = (port == null ? 8080 : port); + if (p < 1 || p > 65535) { + throw new IllegalArgumentException("Invalid port number: " + p + ". Port must be between 1 and 65535"); + } + String rd = (rootDir == null || rootDir.isBlank()) ? "./www" : rootDir; + return new ServerConfig(p, rd); + } + } + + @JsonIgnoreProperties(ignoreUnknown = true) + public record LoggingConfig( + @JsonProperty("level") String level + ) { + public static LoggingConfig defaults() { + return new LoggingConfig("INFO"); + } + + public LoggingConfig withDefaultsApplied() { + String lvl = (level == null || level.isBlank()) ? "INFO" : level; + return new LoggingConfig(lvl); + } + } +} diff --git a/src/main/java/org/example/config/ConfigLoader.java b/src/main/java/org/example/config/ConfigLoader.java new file mode 100644 index 00000000..e69f784d --- /dev/null +++ b/src/main/java/org/example/config/ConfigLoader.java @@ -0,0 +1,71 @@ +package org.example.config; + +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.json.JsonMapper; +import tools.jackson.dataformat.yaml.YAMLFactory; +import tools.jackson.dataformat.yaml.YAMLMapper; + +import java.io.InputStream; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.Objects; + +public final class ConfigLoader { + + private static volatile AppConfig cached; + + private ConfigLoader() {} + + public static AppConfig loadOnce(Path configPath) { + if (cached != null) return cached; + + synchronized (ConfigLoader.class) { + if (cached == null){ + cached = load(configPath).withDefaultsApplied(); + } + return cached; + } + } + + public static AppConfig get(){ + if (cached == null){ + throw new IllegalStateException("Config not loaded. call ConfigLoader.loadOnce(...) at startup."); + } + return cached; + + } + + public static AppConfig load(Path configPath) { + Objects.requireNonNull(configPath, "configPath"); + + if (!Files.exists(configPath)) { + return AppConfig.defaults(); + } + + ObjectMapper objectMapper = createMapperFor(configPath); + + try (InputStream stream = Files.newInputStream(configPath)){ + AppConfig config = objectMapper.readValue(stream, AppConfig.class); + return config == null ? AppConfig.defaults() : config; + } catch (Exception e){ + throw new IllegalStateException("failed to read config file " + configPath.toAbsolutePath(), e); + } + } + + private static ObjectMapper createMapperFor(Path configPath) { + String name = configPath.getFileName().toString().toLowerCase(); + + if (name.endsWith(".yml") || name.endsWith(".yaml")) { + return YAMLMapper.builder(new YAMLFactory()).build(); + + } else if (name.endsWith(".json")) { + return JsonMapper.builder().build(); + } else { + return YAMLMapper.builder(new YAMLFactory()).build(); + } + } + + static void resetForTests() { + cached = null; + } +} diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml new file mode 100644 index 00000000..8f2ef3a7 --- /dev/null +++ b/src/main/resources/application.yml @@ -0,0 +1,6 @@ +server: + port: 8080 + rootDir: ./www + +logging: + level: INFO \ No newline at end of file diff --git a/src/test/java/org/example/config/ConfigLoaderTest.java b/src/test/java/org/example/config/ConfigLoaderTest.java new file mode 100644 index 00000000..b694a7af --- /dev/null +++ b/src/test/java/org/example/config/ConfigLoaderTest.java @@ -0,0 +1,141 @@ +package org.example.config; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; + +import java.nio.file.Files; +import java.nio.file.Path; + +import static org.assertj.core.api.Assertions.*; + +class ConfigLoaderTest { + + @TempDir + Path tempDir; + + @BeforeEach + void reset() { + ConfigLoader.resetForTests(); + } + + @Test + @DisplayName("Should return default configuration when config file is missing") + void load_returns_defaults_when_file_missing() { + Path missing = tempDir.resolve("missing.yml"); + + AppConfig appConfig = ConfigLoader.load(missing).withDefaultsApplied(); + + assertThat(appConfig.server().port()).isEqualTo(8080); + assertThat(appConfig.server().rootDir()).isEqualTo("./www"); + assertThat(appConfig.logging().level()).isEqualTo("INFO"); + } + + @Test + @DisplayName("Should load values from YAML file when file exists") + void loadOnce_reads_yaml_values() throws Exception { + Path configFile = tempDir.resolve("application.yml"); + Files.writeString(configFile, """ + server: + port: 9090 + rootDir: ./public + logging: + level: DEBUG + """); + + AppConfig appConfig = ConfigLoader.loadOnce(configFile); + + assertThat(appConfig.server().port()).isEqualTo(9090); + assertThat(appConfig.server().rootDir()).isEqualTo("./public"); + assertThat(appConfig.logging().level()).isEqualTo("DEBUG"); + } + + @Test + @DisplayName("Should apply default values when sections or fields are missing") + void defaults_applied_when_sections_or_fields_missing() throws Exception { + Path configFile = tempDir.resolve("application.yml"); + Files.writeString(configFile, """ + server: + port: 1234 + """); + + AppConfig cfg = ConfigLoader.loadOnce(configFile); + + assertThat(cfg.server().port()).isEqualTo(1234); + assertThat(cfg.server().rootDir()).isEqualTo("./www"); // default + assertThat(cfg.logging().level()).isEqualTo("INFO"); // default + } + + @Test + @DisplayName("Should ignore unknown fields in configuration file") + void unknown_fields_are_ignored() throws Exception { + Path configFile = tempDir.resolve("application.yml"); + Files.writeString(configFile, """ + server: + port: 8081 + rootDir: ./www + threads: 8 + logging: + level: INFO + json: true + """); + + AppConfig cfg = ConfigLoader.loadOnce(configFile); + + assertThat(cfg.server().port()).isEqualTo(8081); + assertThat(cfg.server().rootDir()).isEqualTo("./www"); + assertThat(cfg.logging().level()).isEqualTo("INFO"); + } + + @Test + @DisplayName("Should return same instance on repeated loadOnce calls") + void loadOnce_caches_same_instance() throws Exception { + Path configFile = tempDir.resolve("application.yml"); + Files.writeString(configFile, """ + server: + port: 8080 + rootDir: ./www + logging: + level: INFO + """); + + AppConfig a = ConfigLoader.loadOnce(configFile); + AppConfig b = ConfigLoader.loadOnce(configFile); + + assertThat(a).isSameAs(b); + } + + @Test + @DisplayName("Should throw exception when get is called before configuration is loaded") + void get_throws_if_not_loaded() { + assertThatThrownBy(ConfigLoader::get) + .isInstanceOf(IllegalStateException.class) + .hasMessageContaining("not loaded"); + } + + @Test + @DisplayName("Should fail when configuration file is invalid") + void invalid_yaml_fails() throws Exception { + Path configFile = tempDir.resolve("broken.yml"); + Files.writeString(configFile, "server:\n port 8080\n"); // saknar ':' efter port + + assertThatThrownBy(() -> ConfigLoader.load(configFile)) + .isInstanceOf(IllegalStateException.class) + .hasMessageContaining("failed to read config file"); + } + + @Test + @DisplayName("Should fail when port is out of range") + void invalid_port_should_Throw_Exception () throws Exception { + Path configFile = tempDir.resolve("application.yml"); + + Files.writeString(configFile, """ + server: + port: 70000 + """); + + assertThatThrownBy(() -> ConfigLoader.loadOnce(configFile)) + .isInstanceOf(IllegalArgumentException.class).hasMessageContaining("Invalid port number"); + } +} From c0e3de64d6ddf41604dd12bca529b891f63a6eef Mon Sep 17 00:00:00 2001 From: Caroline Nordbrandt Date: Tue, 17 Feb 2026 14:23:09 +0100 Subject: [PATCH 14/40] Enhancement/404 page not found (#53) * Add 404 error handling to `StaticFileHandler` with fallback page * Add test coverage for `StaticFileHandler` and improve constructor flexibility - Introduced a new constructor in `StaticFileHandler` to support custom web root paths, improving testability. - Added `StaticFileHandlerTest` to validate static file serving and error handling logic. * Add test for 404 handling in `StaticFileHandler` - Added a test to ensure nonexistent files return a 404 response. - Utilized a temporary directory and fallback file for improved test isolation. * Verify `Content-Type` header in `StaticFileHandlerTest` after running Pittest, mutations survived where setHeaders could be removed without test failure. * Remove unused `.btn` styles from `pageNotFound.html` * Improve 404 handling in `StaticFileHandler`: add fallback to plain text response if `pageNotFound.html` is missing, and fix typo in `pageNotFound.html`, after comments from CodeRabbit. --- .../java/org/example/StaticFileHandler.java | 29 ++++++- .../org/example/StaticFileHandlerTest.java | 79 +++++++++++++++++++ www/pageNotFound.html | 55 +++++++++++++ 3 files changed, 159 insertions(+), 4 deletions(-) create mode 100644 src/test/java/org/example/StaticFileHandlerTest.java create mode 100644 www/pageNotFound.html diff --git a/src/main/java/org/example/StaticFileHandler.java b/src/main/java/org/example/StaticFileHandler.java index 95a0b424..bf9e79bc 100644 --- a/src/main/java/org/example/StaticFileHandler.java +++ b/src/main/java/org/example/StaticFileHandler.java @@ -10,21 +10,42 @@ import java.util.Map; public class StaticFileHandler { - private static final String WEB_ROOT = "www"; + private final String WEB_ROOT; private byte[] fileBytes; + private int statusCode; - public StaticFileHandler(){} + //Constructor for production + public StaticFileHandler() { + WEB_ROOT = "www"; + } + + //Constructor for tests, otherwise the www folder won't be seen + public StaticFileHandler(String webRoot){ + WEB_ROOT = webRoot; + } private void handleGetRequest(String uri) throws IOException { File file = new File(WEB_ROOT, uri); - fileBytes = Files.readAllBytes(file.toPath()); - + if(file.exists()) { + fileBytes = Files.readAllBytes(file.toPath()); + statusCode = 200; + } else { + File errorFile = new File(WEB_ROOT, "pageNotFound.html"); + if(errorFile.exists()) { + fileBytes = Files.readAllBytes(errorFile.toPath()); + } else { + fileBytes = "404 Not Found".getBytes(); + } + statusCode = 404; + } } public void sendGetRequest(OutputStream outputStream, String uri) throws IOException{ handleGetRequest(uri); + HttpResponseBuilder response = new HttpResponseBuilder(); + response.setStatusCode(statusCode); response.setHeaders(Map.of("Content-Type", "text/html; charset=utf-8")); response.setBody(fileBytes); PrintWriter writer = new PrintWriter(outputStream, true); diff --git a/src/test/java/org/example/StaticFileHandlerTest.java b/src/test/java/org/example/StaticFileHandlerTest.java new file mode 100644 index 00000000..871fdb46 --- /dev/null +++ b/src/test/java/org/example/StaticFileHandlerTest.java @@ -0,0 +1,79 @@ +package org.example; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import static org.junit.jupiter.api.Assertions.*; + +/** + * Unit test class for verifying the behavior of the StaticFileHandler class. + * + * This test class ensures that StaticFileHandler correctly handles GET requests + * for static files, including both cases where the requested file exists and + * where it does not. Temporary directories and files are utilized in tests to + * ensure no actual file system dependencies during test execution. + * + * Key functional aspects being tested include: + * - Correct response status code and content for an existing file. + * - Correct response status code and fallback behavior for a missing file. + */ +class StaticFileHandlerTest { + + //Junit creates a temporary folder which can be filled with temporary files that gets removed after tests + @TempDir + Path tempDir; + + + @Test + void test_file_that_exists_should_return_200() throws IOException { + //Arrange + Path testFile = tempDir.resolve("test.html"); // Defines the path in the temp directory + Files.writeString(testFile, "Hello Test"); // Creates a text in that file + + //Using the new constructor in StaticFileHandler to reroute so the tests uses the temporary folder instead of the hardcoded www + StaticFileHandler staticFileHandler = new StaticFileHandler(tempDir.toString()); + + //Using ByteArrayOutputStream instead of Outputstream during tests to capture the servers response in memory, fake stream + ByteArrayOutputStream fakeOutput = new ByteArrayOutputStream(); + + //Act + staticFileHandler.sendGetRequest(fakeOutput, "test.html"); //Get test.html and write the answer to fakeOutput + + //Assert + String response = fakeOutput.toString();//Converts the captured byte stream into a String for verification + + assertTrue(response.contains("HTTP/1.1 200 OK")); // Assert the status + assertTrue(response.contains("Hello Test")); //Assert the content in the file + + assertTrue(response.contains("Content-Type: text/html; charset=utf-8")); // Verify the correct Content-type header + + } + + @Test + void test_file_that_does_not_exists_should_return_404() throws IOException { + //Arrange + // Pre-create the mandatory error page in the temp directory to prevent NoSuchFileException + Path testFile = tempDir.resolve("pageNotFound.html"); + Files.writeString(testFile, "Fallback page"); + + //Using the new constructor in StaticFileHandler to reroute so the tests uses the temporary folder instead of the hardcoded www + StaticFileHandler staticFileHandler = new StaticFileHandler(tempDir.toString()); + + //Using ByteArrayOutputStream instead of Outputstream during tests to capture the servers response in memory, fake stream + ByteArrayOutputStream fakeOutput = new ByteArrayOutputStream(); + + //Act + staticFileHandler.sendGetRequest(fakeOutput, "notExistingFile.html"); // Request a file that clearly doesn't exist to trigger the 404 logic + + //Assert + String response = fakeOutput.toString();//Converts the captured byte stream into a String for verification + + assertTrue(response.contains("HTTP/1.1 404 Not Found")); // Assert the status + + } + +} diff --git a/www/pageNotFound.html b/www/pageNotFound.html new file mode 100644 index 00000000..b02f57aa --- /dev/null +++ b/www/pageNotFound.html @@ -0,0 +1,55 @@ + + + + + + 404 - Page Not Found + + + +
+
🚀
+

404

+

Woopsie daisy! Page went to the moon.

+

We cannot find the page you were looking for. Might have been moved, removed, or maybe it was kind of a useless link to begin with.

+
+ + \ No newline at end of file From bcb828c72571870ee642647ea8a8b76c5e59443c Mon Sep 17 00:00:00 2001 From: Martin Stenhagen Date: Wed, 18 Feb 2026 10:41:30 +0100 Subject: [PATCH 15/40] Feature/issue59 run configloader (#61) * Implements configuration loading and ensures that ConfigLoader is invoked during application startup (App.main). * Minor formating. --- src/main/java/org/example/App.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/example/App.java b/src/main/java/org/example/App.java index 66c9af10..408a1942 100644 --- a/src/main/java/org/example/App.java +++ b/src/main/java/org/example/App.java @@ -1,7 +1,16 @@ package org.example; +import org.example.config.AppConfig; +import org.example.config.ConfigLoader; + +import java.nio.file.Path; + public class App { public static void main(String[] args) { - new TcpServer(8080).start(); + Path configPath = Path.of("src/main/resources/application.yml"); + + AppConfig appConfig = ConfigLoader.loadOnce(configPath); + int port = appConfig.server().port(); + new TcpServer(port).start(); } -} \ No newline at end of file +} From 945d32b8c4fd2456f33ed2510d61ee34932aaf53 Mon Sep 17 00:00:00 2001 From: Eric Phu Date: Wed, 18 Feb 2026 17:25:37 +0100 Subject: [PATCH 16/40] 23 define and create filter interface (#46) * initial commit, added interfaces Filter and FilterChain * Added HttpRequest class, groups together all information about a request that the server needs and easier to handle by future filters * added interfaces Filter and FilterChain with Java Servlet Filter architecture. * added FilterChainImpl * Corrected imports from JDKS HttpRequest, to projects HttpRequest class * Changed, params for FilterChain * Updated HttpRequest with attributes, * Revert "Updated HttpRequest with attributes," This reverts commit 0fd490e83e335ceaef61b2acb22aa61d9e810f91. --- src/main/java/org/example/filter/Filter.java | 14 +++++++ .../java/org/example/filter/FilterChain.java | 10 +++++ .../org/example/filter/FilterChainImpl.java | 33 +++++++++++++++ .../org/example/httpparser/HttpRequest.java | 41 +++++++++++++++++++ 4 files changed, 98 insertions(+) create mode 100644 src/main/java/org/example/filter/Filter.java create mode 100644 src/main/java/org/example/filter/FilterChain.java create mode 100644 src/main/java/org/example/filter/FilterChainImpl.java create mode 100644 src/main/java/org/example/httpparser/HttpRequest.java diff --git a/src/main/java/org/example/filter/Filter.java b/src/main/java/org/example/filter/Filter.java new file mode 100644 index 00000000..5bd4eb1c --- /dev/null +++ b/src/main/java/org/example/filter/Filter.java @@ -0,0 +1,14 @@ +package org.example.filter; + +import org.example.http.HttpResponseBuilder; + +import org.example.httpparser.HttpRequest; + +public interface Filter { + void init(); + + void doFilter(HttpRequest request, HttpResponseBuilder response, FilterChain chain); + + void destroy(); + +} diff --git a/src/main/java/org/example/filter/FilterChain.java b/src/main/java/org/example/filter/FilterChain.java new file mode 100644 index 00000000..942da453 --- /dev/null +++ b/src/main/java/org/example/filter/FilterChain.java @@ -0,0 +1,10 @@ +package org.example.filter; + +import org.example.http.HttpResponseBuilder; +import org.example.httpparser.HttpRequest; + + +public interface FilterChain { + + void doFilter(HttpRequest request, HttpResponseBuilder response); +} diff --git a/src/main/java/org/example/filter/FilterChainImpl.java b/src/main/java/org/example/filter/FilterChainImpl.java new file mode 100644 index 00000000..b6c4509f --- /dev/null +++ b/src/main/java/org/example/filter/FilterChainImpl.java @@ -0,0 +1,33 @@ +package org.example.filter; + +import org.example.http.HttpResponseBuilder; +import org.example.httpparser.HttpRequest; + + +import java.util.List; + +/* +* The default class of FilterChain, +* Contains a list of filters. For each of the filter, will execute the doFilter method. +* + */ + +public class FilterChainImpl implements FilterChain { + + private final List filters; + private int index = 0; + + public FilterChainImpl(List filters) { + this.filters = filters; + } + + @Override + public void doFilter(HttpRequest request, HttpResponseBuilder response) { + if (index < filters.size()) { + Filter next = filters.get(index++); + next.doFilter(request, response, this); + } else { + // TODO: when no more filters, should execute the request + } + } +} diff --git a/src/main/java/org/example/httpparser/HttpRequest.java b/src/main/java/org/example/httpparser/HttpRequest.java new file mode 100644 index 00000000..ad65d496 --- /dev/null +++ b/src/main/java/org/example/httpparser/HttpRequest.java @@ -0,0 +1,41 @@ +package org.example.httpparser; + +import java.util.Collections; +import java.util.Map; + +/* +* +*This class groups together all information about a request that the server needs + */ + +public class HttpRequest { + + private final String method; + private final String path; + private final String version; + private final Map headers; + private final String body; + + public HttpRequest(String method, + String path, + String version, + Map headers, + String body) { + this.method = method; + this.path = path; + this.version = version; + this.headers = headers != null ? Map.copyOf(headers) : Collections.emptyMap(); + this.body = body; + } + + public String getMethod() { + return method; } + public String getPath() { + return path; } + public String getVersion() { + return version; } + public Map getHeaders() { + return headers; } + public String getBody() { + return body; } + } From 3128ac77b717c901545521e6a83e1412f7a34a74 Mon Sep 17 00:00:00 2001 From: Younes Ahmad Date: Wed, 18 Feb 2026 23:37:02 +0100 Subject: [PATCH 17/40] Feature/mime type detection #8 (#47) * Added MIME detector class and test class * Added logic for Mime detector class * Added Unit tests * Added logic in HttpResponseBuilder and tests to try it out * Solves duplicate header issue * Removed a file for another issue * Changed hashmap to Treemap per code rabbits suggestion * Corrected logic error that was failing tests as per P2P review * Added more reason phrases and unit testing, also applied code rabbits suggestions! * Added changes to Responsebuilder to make merging easier * Changed back to earlier commit to hande byte corruption new PR * Added StaticFileHandler from main * Added staticFileHandler with binary-safe writing * Fix: Normalize Content-Type charset to uppercase UTF-8 Changed 'charset=utf-8' to 'charset=UTF-8' in StaticFileHandlerTest to match MimeTypeDetector output and align with HTTP RFC standard. Uppercase UTF-8 is the correct format per RFC 2616/7231. --- .../java/org/example/StaticFileHandler.java | 34 +- .../org/example/http/HttpResponseBuilder.java | 111 +++-- .../org/example/http/MimeTypeDetector.java | 77 +++ .../org/example/StaticFileHandlerTest.java | 2 +- .../example/http/HttpResponseBuilderTest.java | 453 +++++++++++++++++- .../example/http/MimeTypeDetectorTest.java | 165 +++++++ 6 files changed, 779 insertions(+), 63 deletions(-) create mode 100644 src/main/java/org/example/http/MimeTypeDetector.java create mode 100644 src/test/java/org/example/http/MimeTypeDetectorTest.java diff --git a/src/main/java/org/example/StaticFileHandler.java b/src/main/java/org/example/StaticFileHandler.java index bf9e79bc..58f13379 100644 --- a/src/main/java/org/example/StaticFileHandler.java +++ b/src/main/java/org/example/StaticFileHandler.java @@ -5,34 +5,40 @@ import java.io.File; import java.io.IOException; import java.io.OutputStream; -import java.io.PrintWriter; import java.nio.file.Files; -import java.util.Map; public class StaticFileHandler { private final String WEB_ROOT; private byte[] fileBytes; private int statusCode; - //Constructor for production + // Constructor for production public StaticFileHandler() { WEB_ROOT = "www"; } - //Constructor for tests, otherwise the www folder won't be seen - public StaticFileHandler(String webRoot){ + // Constructor for tests, otherwise the www folder won't be seen + public StaticFileHandler(String webRoot) { WEB_ROOT = webRoot; } private void handleGetRequest(String uri) throws IOException { + // Security: Prevent path traversal attacks (e.g. GET /../../etc/passwd) + File root = new File(WEB_ROOT).getCanonicalFile(); + File file = new File(root, uri).getCanonicalFile(); + + if (!file.toPath().startsWith(root.toPath())) { + fileBytes = "403 Forbidden".getBytes(); + statusCode = 403; + return; + } - File file = new File(WEB_ROOT, uri); - if(file.exists()) { + if (file.exists()) { fileBytes = Files.readAllBytes(file.toPath()); statusCode = 200; } else { File errorFile = new File(WEB_ROOT, "pageNotFound.html"); - if(errorFile.exists()) { + if (errorFile.exists()) { fileBytes = Files.readAllBytes(errorFile.toPath()); } else { fileBytes = "404 Not Found".getBytes(); @@ -41,16 +47,16 @@ private void handleGetRequest(String uri) throws IOException { } } - public void sendGetRequest(OutputStream outputStream, String uri) throws IOException{ + public void sendGetRequest(OutputStream outputStream, String uri) throws IOException { handleGetRequest(uri); HttpResponseBuilder response = new HttpResponseBuilder(); response.setStatusCode(statusCode); - response.setHeaders(Map.of("Content-Type", "text/html; charset=utf-8")); + // Use MimeTypeDetector instead of hardcoded text/html + response.setContentTypeFromFilename(uri); response.setBody(fileBytes); - PrintWriter writer = new PrintWriter(outputStream, true); - writer.println(response.build()); + outputStream.write(response.build()); + outputStream.flush(); } - -} +} \ No newline at end of file diff --git a/src/main/java/org/example/http/HttpResponseBuilder.java b/src/main/java/org/example/http/HttpResponseBuilder.java index afaafcf9..db6a6958 100644 --- a/src/main/java/org/example/http/HttpResponseBuilder.java +++ b/src/main/java/org/example/http/HttpResponseBuilder.java @@ -1,8 +1,8 @@ package org.example.http; -// + import java.nio.charset.StandardCharsets; -import java.util.LinkedHashMap; import java.util.Map; +import java.util.TreeMap; public class HttpResponseBuilder { @@ -10,53 +10,108 @@ public class HttpResponseBuilder { private int statusCode = 200; private String body = ""; private byte[] bytebody; - private Map headers = new LinkedHashMap<>(); + private Map headers = new TreeMap<>(String.CASE_INSENSITIVE_ORDER); private static final String CRLF = "\r\n"; + private static final Map REASON_PHRASES = Map.ofEntries( + Map.entry(200, "OK"), + Map.entry(201, "Created"), + Map.entry(204, "No Content"), + Map.entry(301, "Moved Permanently"), + Map.entry(302, "Found"), + Map.entry(303, "See Other"), + Map.entry(304, "Not Modified"), + Map.entry(307, "Temporary Redirect"), + Map.entry(308, "Permanent Redirect"), + Map.entry(400, "Bad Request"), + Map.entry(401, "Unauthorized"), + Map.entry(403, "Forbidden"), + Map.entry(404, "Not Found"), + Map.entry(500, "Internal Server Error"), + Map.entry(502, "Bad Gateway"), + Map.entry(503, "Service Unavailable") + ); public void setStatusCode(int statusCode) { this.statusCode = statusCode; } public void setBody(String body) { this.body = body != null ? body : ""; + this.bytebody = null; // Clear byte body when setting string body } public void setBody(byte[] body) { this.bytebody = body; + this.body = ""; // Clear string body when setting byte body } + public void setHeaders(Map headers) { - this.headers = new LinkedHashMap<>(headers); + this.headers = new TreeMap<>(String.CASE_INSENSITIVE_ORDER); + this.headers.putAll(headers); } - private static final Map REASON_PHRASES = Map.of( - 200, "OK", - 201, "Created", - 400, "Bad Request", - 404, "Not Found", - 500, "Internal Server Error"); - public String build(){ - StringBuilder sb = new StringBuilder(); + public void setHeader(String name, String value) { + this.headers.put(name, value); + } + + public void setContentTypeFromFilename(String filename) { + String mimeType = MimeTypeDetector.detectMimeType(filename); + setHeader("Content-Type", mimeType); + } + + /* + * Builds the complete HTTP response as a byte array and preserves binary content without corruption. + * @return Complete HTTP response (headers + body) as byte[] + */ + public byte[] build() { + // Determine content body and length + byte[] contentBody; int contentLength; - if(body.isEmpty() && bytebody != null){ + + if (bytebody != null) { + contentBody = bytebody; contentLength = bytebody.length; - setBody(new String(bytebody, StandardCharsets.UTF_8)); - }else{ - contentLength = body.getBytes(StandardCharsets.UTF_8).length; + } else { + contentBody = body.getBytes(StandardCharsets.UTF_8); + contentLength = contentBody.length; } + // Build headers as String + StringBuilder headerBuilder = new StringBuilder(); - String reason = REASON_PHRASES.getOrDefault(statusCode, "OK"); - sb.append(PROTOCOL).append(" ").append(statusCode).append(" ").append(reason).append(CRLF); - headers.forEach((k,v) -> sb.append(k).append(": ").append(v).append(CRLF)); - sb.append("Content-Length: ") - .append(contentLength); - sb.append(CRLF); - sb.append("Connection: close").append(CRLF); - sb.append(CRLF); - sb.append(body); - return sb.toString(); + // Status line + String reason = REASON_PHRASES.getOrDefault(statusCode, ""); + headerBuilder.append(PROTOCOL).append(" ").append(statusCode); + if (!reason.isEmpty()) { + headerBuilder.append(" ").append(reason); + } + headerBuilder.append(CRLF); - } + // User-defined headers + headers.forEach((k, v) -> headerBuilder.append(k).append(": ").append(v).append(CRLF)); -} + // Auto-append Content-Length if not set. + if (!headers.containsKey("Content-Length")) { + headerBuilder.append("Content-Length: ").append(contentLength).append(CRLF); + } + + // Auto-append Connection if not set. + if (!headers.containsKey("Connection")) { + headerBuilder.append("Connection: close").append(CRLF); + } + + // Blank line before body + headerBuilder.append(CRLF); + + // Convert headers to bytes + byte[] headerBytes = headerBuilder.toString().getBytes(StandardCharsets.UTF_8); + + // Combine headers + body into single byte array + byte[] response = new byte[headerBytes.length + contentBody.length]; + System.arraycopy(headerBytes, 0, response, 0, headerBytes.length); + System.arraycopy(contentBody, 0, response, headerBytes.length, contentBody.length); + + return response; + } +} \ No newline at end of file diff --git a/src/main/java/org/example/http/MimeTypeDetector.java b/src/main/java/org/example/http/MimeTypeDetector.java new file mode 100644 index 00000000..9005078a --- /dev/null +++ b/src/main/java/org/example/http/MimeTypeDetector.java @@ -0,0 +1,77 @@ +package org.example.http; + +import java.util.Map; + +/** + * Detects MIME types based on file extensions. + * Used to set the Content-Type header when serving static files. + */ +public final class MimeTypeDetector { + + // Private constructor - utility class + private MimeTypeDetector() { + throw new AssertionError("Utility class - do not instantiate"); + } + + private static final Map MIME_TYPES = Map.ofEntries( + // HTML & Text + Map.entry(".html", "text/html; charset=UTF-8"), + Map.entry(".htm", "text/html; charset=UTF-8"), + Map.entry(".css", "text/css; charset=UTF-8"), + Map.entry(".js", "application/javascript; charset=UTF-8"), + Map.entry(".json", "application/json; charset=UTF-8"), + Map.entry(".xml", "application/xml; charset=UTF-8"), + Map.entry(".txt", "text/plain; charset=UTF-8"), + + // Images + Map.entry(".png", "image/png"), + Map.entry(".jpg", "image/jpeg"), + Map.entry(".jpeg", "image/jpeg"), + Map.entry(".gif", "image/gif"), + Map.entry(".svg", "image/svg+xml"), + Map.entry(".ico", "image/x-icon"), + Map.entry(".webp", "image/webp"), + + // Documents + Map.entry(".pdf", "application/pdf"), + + // Video & Audio + Map.entry(".mp4", "video/mp4"), + Map.entry(".webm", "video/webm"), + Map.entry(".mp3", "audio/mpeg"), + Map.entry(".wav", "audio/wav"), + + // Fonts + Map.entry(".woff", "font/woff"), + Map.entry(".woff2", "font/woff2"), + Map.entry(".ttf", "font/ttf"), + Map.entry(".otf", "font/otf") + ); + + /** + * Detects the MIME type of file based on its extension. + * + * @param filename the name of the file (t.ex., "index.html", "style.css") + * @return the MIME type string (t.ex, "text/html; charset=UTF-8") + */ + + + public static String detectMimeType(String filename) { + + String octet = "application/octet-stream"; + + if (filename == null || filename.isEmpty()) { + return octet; + } + + // Find the last dot to get extension + int lastDot = filename.lastIndexOf('.'); + if (lastDot == -1 || lastDot == filename.length() - 1) { + // No extension or dot at end + return octet; + } + + String extension = filename.substring(lastDot).toLowerCase(); + return MIME_TYPES.getOrDefault(extension, octet); + } +} \ No newline at end of file diff --git a/src/test/java/org/example/StaticFileHandlerTest.java b/src/test/java/org/example/StaticFileHandlerTest.java index 871fdb46..31db5108 100644 --- a/src/test/java/org/example/StaticFileHandlerTest.java +++ b/src/test/java/org/example/StaticFileHandlerTest.java @@ -49,7 +49,7 @@ void test_file_that_exists_should_return_200() throws IOException { assertTrue(response.contains("HTTP/1.1 200 OK")); // Assert the status assertTrue(response.contains("Hello Test")); //Assert the content in the file - assertTrue(response.contains("Content-Type: text/html; charset=utf-8")); // Verify the correct Content-type header + assertTrue(response.contains("Content-Type: text/html; charset=UTF-8")); // Verify the correct Content-type header } diff --git a/src/test/java/org/example/http/HttpResponseBuilderTest.java b/src/test/java/org/example/http/HttpResponseBuilderTest.java index 8b80a7f8..b278ae19 100644 --- a/src/test/java/org/example/http/HttpResponseBuilderTest.java +++ b/src/test/java/org/example/http/HttpResponseBuilderTest.java @@ -1,45 +1,458 @@ package org.example.http; +import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.CsvSource; +import org.junit.jupiter.params.provider.MethodSource; +import org.junit.jupiter.params.provider.ValueSource; -import static org.assertj.core.api.AssertionsForClassTypes.assertThat; +import java.nio.charset.StandardCharsets; +import java.util.HashMap; +import java.util.Map; +import java.util.stream.Stream; - class HttpResponseBuilderTest { +import static org.assertj.core.api.Assertions.assertThat; - /** - * Verifies that build produces a valid HTTP response string! - * Status line is present - * Content-Length header is generated - * The response body is included - */ +class HttpResponseBuilderTest { + + // Helper method to convert byte[] response to String for assertions + private String asString(byte[] response) { + return new String(response, StandardCharsets.UTF_8); + } @Test void build_returnsValidHttpResponse() { + HttpResponseBuilder builder = new HttpResponseBuilder(); + builder.setBody("Hello"); + + byte[] result = builder.build(); + String resultStr = asString(result); + + assertThat(resultStr) + .contains("HTTP/1.1 200 OK") + .contains("Content-Length: 5") + .contains("\r\n\r\n") + .contains("Hello"); + } + + // UTF-8 content length för olika strängar + @ParameterizedTest + @CsvSource({ + "å, 2", // 1 char, 2 bytes + "åäö, 6", // 3 chars, 6 bytes + "Hello, 5", // 5 chars, 5 bytes + "'', 0", // Empty string + "€, 3" // Euro sign, 3 bytes + }) + @DisplayName("Should calculate correct Content-Length for various strings") + void build_handlesUtf8ContentLength(String body, int expectedLength) { + HttpResponseBuilder builder = new HttpResponseBuilder(); + builder.setBody(body); + + byte[] result = builder.build(); + String resultStr = asString(result); + + assertThat(resultStr).contains("Content-Length: " + expectedLength); + } + + @Test + @DisplayName("Should set individual header") + void setHeader_addsHeaderToResponse() { + HttpResponseBuilder builder = new HttpResponseBuilder(); + builder.setHeader("Content-Type", "text/html; charset=UTF-8"); + builder.setBody("Hello"); + + byte[] result = builder.build(); + String resultStr = asString(result); + + assertThat(resultStr).contains("Content-Type: text/html; charset=UTF-8"); + } + + @Test + @DisplayName("Should set multiple headers") + void setHeader_allowsMultipleHeaders() { + HttpResponseBuilder builder = new HttpResponseBuilder(); + builder.setHeader("Content-Type", "application/json"); + builder.setHeader("Cache-Control", "no-cache"); + builder.setBody("{}"); + + byte[] result = builder.build(); + String resultStr = asString(result); + + assertThat(resultStr) + .contains("Content-Type: application/json") + .contains("Cache-Control: no-cache"); + } + + @ParameterizedTest + @CsvSource({ + "index.html, text/html; charset=UTF-8", + "page.htm, text/html; charset=UTF-8", + "style.css, text/css; charset=UTF-8", + "app.js, application/javascript; charset=UTF-8", + "data.json, application/json; charset=UTF-8", + "logo.png, image/png", + "photo.jpg, image/jpeg", + "image.jpeg, image/jpeg", + "icon.gif, image/gif", + "graphic.svg, image/svg+xml", + "favicon.ico, image/x-icon", + "doc.pdf, application/pdf", + "file.txt, text/plain; charset=UTF-8", + "config.xml, application/xml; charset=UTF-8" + }) + @DisplayName("Should auto-detect Content-Type from filename") + void setContentTypeFromFilename_detectsVariousTypes(String filename, String expectedContentType) { + HttpResponseBuilder builder = new HttpResponseBuilder(); + builder.setContentTypeFromFilename(filename); + builder.setBody("test content"); + + byte[] result = builder.build(); + String resultStr = asString(result); + + assertThat(resultStr).contains("Content-Type: " + expectedContentType); + } + + @ParameterizedTest(name = "{index} - Filename: {0} => Expected: {1}") + @CsvSource(value = { + "index.html, text/html; charset=UTF-8", + "style.css, text/css; charset=UTF-8", + "logo.png, image/png", + "doc.pdf, application/pdf", + "file.xyz, application/octet-stream", + "/var/www/index.html, text/html; charset=UTF-8", + "'', application/octet-stream", + "null, application/octet-stream" + }, nullValues = "null") + @DisplayName("Should detect Content-Type from various filenames and edge cases") + void setContentTypeFromFilename_allCases(String filename, String expectedContentType) { + HttpResponseBuilder builder = new HttpResponseBuilder(); + builder.setContentTypeFromFilename(filename); + builder.setBody("test"); + + byte[] result = builder.build(); + String resultStr = asString(result); + + assertThat(resultStr).contains("Content-Type: " + expectedContentType); + } + + @ParameterizedTest + @MethodSource("provideHeaderDuplicationScenarios") + @DisplayName("Should not duplicate headers when manually set") + void build_doesNotDuplicateHeaders(String headerName, String manualValue, String bodyContent) { + HttpResponseBuilder builder = new HttpResponseBuilder(); + builder.setHeader(headerName, manualValue); + builder.setBody(bodyContent); + + byte[] result = builder.build(); + String resultStr = asString(result); + + long count = resultStr.lines() + .filter(line -> line.startsWith(headerName + ":")) + .count(); + + assertThat(count).isEqualTo(1); + assertThat(resultStr).contains(headerName + ": " + manualValue); + } + + private static Stream provideHeaderDuplicationScenarios() { + return Stream.of( + Arguments.of("Content-Length", "999", "Hello"), + Arguments.of("Content-Length", "0", ""), + Arguments.of("Content-Length", "12345", "Test content"), + Arguments.of("Connection", "keep-alive", "Hello"), + Arguments.of("Connection", "upgrade", "WebSocket data"), + Arguments.of("Connection", "close", "Goodbye") + ); + } + + @Test + @DisplayName("setHeaders should preserve case-insensitive behavior") + void setHeaders_preservesCaseInsensitivity() { + HttpResponseBuilder builder = new HttpResponseBuilder(); + + Map headers = new HashMap<>(); + headers.put("content-type", "text/html"); + headers.put("cache-control", "no-cache"); + builder.setHeaders(headers); + + builder.setHeader("Content-Length", "100"); + builder.setBody("Hello"); + + byte[] result = builder.build(); + String resultStr = asString(result); + + long count = resultStr.lines() + .filter(line -> line.toLowerCase().startsWith("content-length:")) + .count(); + + assertThat(count).isEqualTo(1); + } + + @ParameterizedTest + @CsvSource({ + "301, Moved Permanently", + "302, Found", + "304, Not Modified", + "400, Bad Request", + "401, Unauthorized", + "403, Forbidden", + "404, Not Found", + "500, Internal Server Error", + "502, Bad Gateway", + "503, Service Unavailable" + }) + @DisplayName("Should have correct reason phrases for common status codes") + void build_correctReasonPhrases(int statusCode, String expectedReason) { + HttpResponseBuilder builder = new HttpResponseBuilder(); + builder.setStatusCode(statusCode); + builder.setBody(""); + + byte[] result = builder.build(); + String resultStr = asString(result); + + assertThat(resultStr).contains("HTTP/1.1 " + statusCode + " " + expectedReason); + } + + // Redirect status codes + @ParameterizedTest + @CsvSource({ + "301, Moved Permanently, /new-page", + "302, Found, /temporary-page", + "303, See Other, /other-page", + "307, Temporary Redirect, /temp-redirect", + "308, Permanent Redirect, /perm-redirect" + }) + @DisplayName("Should handle redirect status codes correctly") + void build_handlesRedirectStatusCodes(int statusCode, String expectedReason, String location) { + HttpResponseBuilder builder = new HttpResponseBuilder(); + builder.setStatusCode(statusCode); + builder.setHeader("Location", location); + builder.setBody(""); + + byte[] result = builder.build(); + String resultStr = asString(result); + + assertThat(resultStr) + .contains("HTTP/1.1 " + statusCode + " " + expectedReason) + .contains("Location: " + location) + .doesNotContain("OK"); + } + + // Error status codes + @ParameterizedTest + @CsvSource({ + "400, Bad Request", + "401, Unauthorized", + "403, Forbidden", + "404, Not Found", + "500, Internal Server Error", + "502, Bad Gateway", + "503, Service Unavailable" + }) + @DisplayName("Should handle error status codes correctly") + void build_handlesErrorStatusCodes(int statusCode, String expectedReason) { + HttpResponseBuilder builder = new HttpResponseBuilder(); + builder.setStatusCode(statusCode); + builder.setBody("Error message"); + + byte[] result = builder.build(); + String resultStr = asString(result); + + assertThat(resultStr) + .contains("HTTP/1.1 " + statusCode + " " + expectedReason) + .doesNotContain("OK"); + } + + // Unknown status codes + @ParameterizedTest + @ValueSource(ints = {999, 123, 777, 100, 600}) + @DisplayName("Should handle unknown status codes gracefully") + void build_handlesUnknownStatusCodes(int statusCode) { + HttpResponseBuilder builder = new HttpResponseBuilder(); + builder.setStatusCode(statusCode); + builder.setBody(""); + + byte[] result = builder.build(); + String resultStr = asString(result); + + assertThat(resultStr) + .startsWith("HTTP/1.1 " + statusCode) + .doesNotContain("OK"); + } + + @Test + @DisplayName("Should auto-append headers when not manually set") + void build_autoAppendsHeadersWhenNotSet() { + HttpResponseBuilder builder = new HttpResponseBuilder(); + builder.setBody("Hello"); + + byte[] result = builder.build(); + String resultStr = asString(result); + + assertThat(resultStr) + .contains("Content-Length: 5") + .contains("Connection: close"); + } + + @Test + @DisplayName("Should allow custom headers alongside auto-generated ones") + void build_combinesCustomAndAutoHeaders() { + HttpResponseBuilder builder = new HttpResponseBuilder(); + builder.setHeader("Content-Type", "text/html"); + builder.setHeader("Cache-Control", "no-cache"); + builder.setBody("Hello"); + + byte[] result = builder.build(); + String resultStr = asString(result); + assertThat(resultStr) + .contains("Content-Type: text/html") + .contains("Cache-Control: no-cache") + .contains("Content-Length: 5") + .contains("Connection: close"); + } + + // Case-insensitive header names + @ParameterizedTest + @CsvSource({ + "content-length, 100", + "Content-Length, 100", + "CONTENT-LENGTH, 100", + "CoNtEnT-LeNgTh, 100" + }) + @DisplayName("Should handle case-insensitive header names") + void setHeader_caseInsensitive(String headerName, String headerValue) { HttpResponseBuilder builder = new HttpResponseBuilder(); + builder.setHeader(headerName, headerValue); builder.setBody("Hello"); - String result = builder.build(); + byte[] result = builder.build(); + String resultStr = asString(result); + + long count = resultStr.lines() + .filter(line -> line.toLowerCase().contains("content-length")) + .count(); - assertThat(result).contains("HTTP/1.1 200 OK"); - assertThat(result).contains("Content-Length: 5"); - assertThat(result).contains("\r\n\r\n"); - assertThat(result).contains("Hello"); + assertThat(count).isEqualTo(1); + assertThat(resultStr.toLowerCase()).contains("content-length: " + headerValue.toLowerCase()); + } + + // Empty/null body + @ParameterizedTest + @CsvSource(value = { + "'', 0", // Empty string + "null, 0" // Null + }, nullValues = "null") + @DisplayName("Should handle empty and null body") + void build_emptyAndNullBody(String body, int expectedLength) { + HttpResponseBuilder builder = new HttpResponseBuilder(); + builder.setBody(body); + + byte[] result = builder.build(); + String resultStr = asString(result); + assertThat(resultStr) + .contains("HTTP/1.1 200 OK") + .contains("Content-Length: " + expectedLength); + } + + // Header override + @ParameterizedTest + @CsvSource({ + "Content-Type, text/plain, text/html", + "Content-Type, application/json, text/xml", + "Connection, keep-alive, close", + "Cache-Control, no-cache, max-age=3600" + }) + @DisplayName("Should override previous header value when set again") + void setHeader_overridesPreviousValue(String headerName, String firstValue, String secondValue) { + HttpResponseBuilder builder = new HttpResponseBuilder(); + builder.setHeader(headerName, firstValue); + builder.setHeader(headerName, secondValue); // Override + builder.setBody("Test"); + + byte[] result = builder.build(); + String resultStr = asString(result); + + assertThat(resultStr) + .contains(headerName + ": " + secondValue) + .doesNotContain(headerName + ": " + firstValue); + } + + // för auto-append behavior + @ParameterizedTest + @MethodSource("provideAutoAppendScenarios") + @DisplayName("Should auto-append specific headers when not manually set") + void build_autoAppendsSpecificHeaders(String body, boolean setContentLength, boolean setConnection, + String expectedContentLength, String expectedConnection) { + HttpResponseBuilder builder = new HttpResponseBuilder(); + + if (setContentLength) { + builder.setHeader("Content-Length", "999"); + } + if (setConnection) { + builder.setHeader("Connection", "keep-alive"); + } + + builder.setBody(body); + byte[] result = builder.build(); + String resultStr = asString(result); + + if (expectedContentLength != null) { + assertThat(resultStr).contains("Content-Length: " + expectedContentLength); + } + if (expectedConnection != null) { + assertThat(resultStr).contains("Connection: " + expectedConnection); + } + } + + private static Stream provideAutoAppendScenarios() { + return Stream.of( + // body, setContentLength, setConnection, expectedContentLength, expectedConnection + Arguments.of("Hello", false, false, "5", "close"), // Auto-append both + Arguments.of("Hello", true, false, "999", "close"), // Manual CL, auto Connection + Arguments.of("Hello", false, true, "5", "keep-alive"), // Auto CL, manual Connection + Arguments.of("Hello", true, true, "999", "keep-alive"), // Both manual + Arguments.of("", false, false, "0", "close") // Empty body + ); } - // Verifies that Content-Length is calculated using UTF-8 byte length! - // @Test - void build_handlesUtf8ContentLength() { + @DisplayName("Should preserve binary content without corruption") + void build_preservesBinaryContent() { HttpResponseBuilder builder = new HttpResponseBuilder(); - builder.setBody("å"); + // Create binary data with non-UTF-8 bytes + byte[] binaryData = new byte[]{ + (byte) 0x89, 0x50, 0x4E, 0x47, // PNG header + (byte) 0xFF, (byte) 0xD8, (byte) 0xFF, (byte) 0xE0 // Invalid UTF-8 sequences + }; + + builder.setBody(binaryData); + builder.setContentTypeFromFilename("test.png"); + + byte[] result = builder.build(); + + // Extract body from response (everything after \r\n\r\n) + int bodyStart = -1; + for (int i = 0; i < result.length - 3; i++) { + if (result[i] == '\r' && result[i+1] == '\n' && + result[i+2] == '\r' && result[i+3] == '\n') { + bodyStart = i + 4; + break; + } + } - String result = builder.build(); + assertThat(bodyStart).isGreaterThan(0); - assertThat(result).contains("Content-Length: 2"); + // Verify binary data is intact + byte[] actualBody = new byte[binaryData.length]; + System.arraycopy(result, bodyStart, actualBody, 0, binaryData.length); + assertThat(actualBody).isEqualTo(binaryData); } -} +} \ No newline at end of file diff --git a/src/test/java/org/example/http/MimeTypeDetectorTest.java b/src/test/java/org/example/http/MimeTypeDetectorTest.java new file mode 100644 index 00000000..913aeb48 --- /dev/null +++ b/src/test/java/org/example/http/MimeTypeDetectorTest.java @@ -0,0 +1,165 @@ +package org.example.http; + +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.CsvSource; + +import static org.assertj.core.api.Assertions.*; + +class MimeTypeDetectorTest { + + @Test + @DisplayName("Should detect HTML files") + void detectMimeType_html() { + assertThat(MimeTypeDetector.detectMimeType("index.html")) + .isEqualTo("text/html; charset=UTF-8"); + + assertThat(MimeTypeDetector.detectMimeType("page.htm")) + .isEqualTo("text/html; charset=UTF-8"); + } + + @Test + @DisplayName("Should detect CSS files") + void detectMimeType_css() { + assertThat(MimeTypeDetector.detectMimeType("style.css")) + .isEqualTo("text/css; charset=UTF-8"); + } + + @Test + @DisplayName("Should detect JavaScript files") + void detectMimeType_javascript() { + assertThat(MimeTypeDetector.detectMimeType("app.js")) + .isEqualTo("application/javascript; charset=UTF-8"); + } + + @Test + @DisplayName("Should detect JSON files") + void detectMimeType_json() { + assertThat(MimeTypeDetector.detectMimeType("data.json")) + .isEqualTo("application/json; charset=UTF-8"); + } + + @Test + @DisplayName("Should detect PNG images") + void detectMimeType_png() { + assertThat(MimeTypeDetector.detectMimeType("logo.png")) + .isEqualTo("image/png"); + } + + @Test + @DisplayName("Should detect JPEG images with .jpg extension") + void detectMimeType_jpg() { + assertThat(MimeTypeDetector.detectMimeType("photo.jpg")) + .isEqualTo("image/jpeg"); + } + + @Test + @DisplayName("Should detect JPEG images with .jpeg extension") + void detectMimeType_jpeg() { + assertThat(MimeTypeDetector.detectMimeType("photo.jpeg")) + .isEqualTo("image/jpeg"); + } + + @Test + @DisplayName("Should detect PDF files") + void detectMimeType_pdf() { + assertThat(MimeTypeDetector.detectMimeType("document.pdf")) + .isEqualTo("application/pdf"); + } + + @Test + @DisplayName("Should be case-insensitive") + void detectMimeType_caseInsensitive() { + assertThat(MimeTypeDetector.detectMimeType("INDEX.HTML")) + .isEqualTo("text/html; charset=UTF-8"); + + assertThat(MimeTypeDetector.detectMimeType("Style.CSS")) + .isEqualTo("text/css; charset=UTF-8"); + + assertThat(MimeTypeDetector.detectMimeType("PHOTO.PNG")) + .isEqualTo("image/png"); + } + + @Test + @DisplayName("Should return default MIME type for unknown extensions") + void detectMimeType_unknownExtension() { + assertThat(MimeTypeDetector.detectMimeType("file.xyz")) + .isEqualTo("application/octet-stream"); + + assertThat(MimeTypeDetector.detectMimeType("document.unknown")) + .isEqualTo("application/octet-stream"); + } + + @Test + @DisplayName("Should handle files without extension") + void detectMimeType_noExtension() { + assertThat(MimeTypeDetector.detectMimeType("README")) + .isEqualTo("application/octet-stream"); + + assertThat(MimeTypeDetector.detectMimeType("Makefile")) + .isEqualTo("application/octet-stream"); + } + + @Test + @DisplayName("Should handle null filename") + void detectMimeType_null() { + assertThat(MimeTypeDetector.detectMimeType(null)) + .isEqualTo("application/octet-stream"); + } + + @Test + @DisplayName("Should handle empty filename") + void detectMimeType_empty() { + assertThat(MimeTypeDetector.detectMimeType("")) + .isEqualTo("application/octet-stream"); + } + + @Test + @DisplayName("Should handle filename ending with dot") + void detectMimeType_endsWithDot() { + assertThat(MimeTypeDetector.detectMimeType("file.")) + .isEqualTo("application/octet-stream"); + } + + @Test + @DisplayName("Should handle path with directories") + void detectMimeType_withPath() { + assertThat(MimeTypeDetector.detectMimeType("/var/www/index.html")) + .isEqualTo("text/html; charset=UTF-8"); + + assertThat(MimeTypeDetector.detectMimeType("css/styles/main.css")) + .isEqualTo("text/css; charset=UTF-8"); + } + + @Test + @DisplayName("Should handle multiple dots in filename") + void detectMimeType_multipleDots() { + assertThat(MimeTypeDetector.detectMimeType("jquery.min.js")) + .isEqualTo("application/javascript; charset=UTF-8"); + + assertThat(MimeTypeDetector.detectMimeType("bootstrap.bundle.min.css")) + .isEqualTo("text/css; charset=UTF-8"); + } + + // Parametriserad test för många filtyper på en gång + @ParameterizedTest + @CsvSource({ + "test.html, text/html; charset=UTF-8", + "style.css, text/css; charset=UTF-8", + "app.js, application/javascript; charset=UTF-8", + "data.json, application/json; charset=UTF-8", + "image.png, image/png", + "photo.jpg, image/jpeg", + "doc.pdf, application/pdf", + "icon.svg, image/svg+xml", + "favicon.ico, image/x-icon", + "video.mp4, video/mp4", + "audio.mp3, audio/mpeg" + }) + @DisplayName("Should detect common file types") + void detectMimeType_commonTypes(String filename, String expectedMimeType) { + assertThat(MimeTypeDetector.detectMimeType(filename)) + .isEqualTo(expectedMimeType); + } +} \ No newline at end of file From d4e74816655d48b0f925c0daab463184ed55e059 Mon Sep 17 00:00:00 2001 From: Elias Lennheimer <47382348+Xeutos@users.noreply.github.com> Date: Thu, 19 Feb 2026 10:20:18 +0100 Subject: [PATCH 18/40] Dockerfile update (#52) (#63) * Update Dockerfile Dockerfiles now copies www folder aswell * Added building and copying of dependency jar files * Fix dependency path in Dockerfile and update classpath in ENTRYPOINT configuration. * Fixed typo in Entrypoint configuration * Expose port 8080 in Dockerfile and changed appuser to come before ENTRYPOINT configuration. * Adjust Dockerfile paths for classes and dependencies, update `COPY` targets accordingly. --- Dockerfile | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index d8b69012..ee7e511e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,9 +3,14 @@ WORKDIR /build COPY src/ src/ COPY pom.xml pom.xml RUN mvn compile +RUN mvn dependency:copy-dependencies -DincludeScope=compile FROM eclipse-temurin:25-jre-alpine +EXPOSE 8080 RUN addgroup -S appgroup && adduser -S appuser -G appgroup -COPY --from=build /build/target/classes/ /app/ -ENTRYPOINT ["java", "-classpath", "/app", "org.example.App"] +WORKDIR /app/ +COPY --from=build /build/target/classes/ / +COPY --from=build /build/target/dependency/ /dependencies/ +COPY /www/ /www/ USER appuser +ENTRYPOINT ["java", "-classpath", "/app:/dependencies/*", "org.example.App"] From 5c80eaac8c189f5a4c4e16d2d9f6e137cd76867b Mon Sep 17 00:00:00 2001 From: Younes Ahmad Date: Thu, 19 Feb 2026 10:25:32 +0100 Subject: [PATCH 19/40] Added comprehensive README.MD (#67) * Added comprehensive README.MD * Added formatting recommendations, clearer info --- README.md | 375 ++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 349 insertions(+), 26 deletions(-) diff --git a/README.md b/README.md index d2be0162..490ccc6b 100644 --- a/README.md +++ b/README.md @@ -1,49 +1,372 @@ -# 🚀 Create Your First Java Program +# ⚡ HTTP Web Server ⚡ +### **Class JUV25G** | Lightweight • Configurable • Secure -Java has evolved to become more beginner-friendly. This guide walks you through creating a simple program that prints “Hello World,” using both the classic syntax and the new streamlined approach introduced in Java 21. +
+ +![Java](https://img.shields.io/badge/Java-21+-orange?style=for-the-badge&logo=openjdk) +![HTTP](https://img.shields.io/badge/HTTP-1.1-blue?style=for-the-badge) +![Status](https://img.shields.io/badge/Status-Active-success?style=for-the-badge) + +*A modern, high-performance HTTP web server built from scratch in Java* + +[Features](#features) • [Quick Start](#quick-start) • [Configuration](#configuration) --- -## ✨ Classic Java Approach +
-Traditionally, Java requires a class with a `main` method as the entry point: +## ✨ Features -```java -public class Main { - public static void main(String[] args) { - System.out.println("Hello World"); - } -} +- 🚀 **High Performance** - Virtual threads for handling thousands of concurrent connections +- 📁 **Static File Serving** - HTML, CSS, JavaScript, images, PDFs, fonts, and more +- 🎨 **Smart MIME Detection** - Automatic Content-Type headers for 20+ file types +- ⚙️ **Flexible Configuration** - YAML or JSON config files with sensible defaults +- 🔒 **Security First** - Path traversal protection and input validation +- 🐳 **Docker Ready** - Multi-stage Dockerfile for easy deployment +- ⚡ **HTTP/1.1 Compliant** - Proper status codes, headers, and responses +- 🎯 **Custom Error Pages** - Branded 404 pages and error handling + +## 📋 Requirements + +| Tool | Version | Purpose | +|------|---------|---------| +| ☕ **Java** | 21+ | Runtime environment | +| 📦 **Maven** | 3.6+ | Build tool | +| 🐳 **Docker** | Latest | Optional - for containerization | + +## Quick Start + +``` +┌─────────────────────────────────────────────┐ +│ Ready to launch your web server? │ +│ Follow these simple steps! │ +└─────────────────────────────────────────────┘ ``` -This works across all Java versions and forms the foundation of most Java programs. +### 1. Clone the repository +```bash +git clone git clone https://github.com/ithsjava25/project-webserver-juv25g.git +cd project-webserver +``` ---- +### 2. Build the project +```bash +mvn clean compile +``` + +### 3. Run the server + +**Option A: Run directly with Maven (recommended for development)** +```bash +mvn exec:java@run +``` + +**Option B: Run compiled classes directly** +```bash +mvn clean compile +java -cp target/classes org.example.App +``` + +**Option C: Using Docker** +```bash +docker build -t webserver . +docker run -p 8080:8080 -v $(pwd)/www:/www webserver +``` + +The server will start on the default port **8080** and serve files from the `www/` directory. + +### 4. Access in browser +Open your browser and navigate to: +``` +http://localhost:8080 +``` -## 🆕 Java 25: Unnamed Class with Instance Main Method +## Configuration -In newer versions like **Java 25**, you can use **Unnamed Classes** and an **Instance Main Method**, which allows for a much cleaner syntax: +The server can be configured using a YAML or JSON configuration file located at: +``` +src/main/resources/application.yml +``` + +### Configuration File Format (YAML) + +```yaml +server: + port: 8080 + rootDir: "./www" + +logging: + level: "INFO" +``` + +### Configuration File Format (JSON) -```java -void main() { - System.out.println("Hello World"); +```json +{ + "server": { + "port": 8080, + "rootDir": "./www" + }, + "logging": { + "level": "INFO" + } } ``` -### 💡 Why is this cool? +### Configuration Options + +| Property | Type | Default | Description | +|----------|------|---------|-------------| +| `server.port` | Integer | `8080` | Port number the server listens on (1-65535) | +| `server.rootDir` | String | `"./www"` | Root directory for serving static files | +| `logging.level` | String | `"INFO"` | Logging level (INFO, DEBUG, WARN, ERROR) | + +### Default Values + +If no configuration file is provided or values are missing, the following defaults are used: + +- **Port:** 8080 +- **Root Directory:** ./www +- **Logging Level:** INFO + +## Directory Structure + +``` +project-webserver/ +├── src/ +│ ├── main/ +│ │ ├── java/ +│ │ │ └── org/example/ +│ │ │ ├── App.java # Main entry point +│ │ │ ├── TcpServer.java # TCP server implementation +│ │ │ ├── ConnectionHandler.java # HTTP request handler +│ │ │ ├── StaticFileHandler.java # Static file server +│ │ │ ├── config/ # Configuration classes +│ │ │ ├── http/ # HTTP response builder & MIME detection +│ │ │ ├── httpparser/ # HTTP request parser +│ │ │ └── filter/ # Filter chain (future feature) +│ │ └── resources/ +│ │ └── application.yml # Configuration file +│ └── test/ # Unit tests +├── www/ # Web root (static files) +│ ├── index.html +│ ├── pageNotFound.html # Custom 404 page +│ └── ... # Other static files +├── pom.xml +└── README.md +``` + +## Serving Static Files + +Place your static files in the `www/` directory (or the directory specified in `server.rootDir`). + +### Supported File Types + +The server automatically detects and serves the correct `Content-Type` for: + +**Text & Markup:** +- HTML (`.html`, `.htm`) +- CSS (`.css`) +- JavaScript (`.js`) +- JSON (`.json`) +- XML (`.xml`) +- Plain text (`.txt`) + +**Images:** +- PNG (`.png`) +- JPEG (`.jpg`, `.jpeg`) +- GIF (`.gif`) +- SVG (`.svg`) +- WebP (`.webp`) +- ICO (`.ico`) + +**Documents:** +- PDF (`.pdf`) + +**Fonts:** +- WOFF (`.woff`) +- WOFF2 (`.woff2`) +- TrueType (`.ttf`) +- OpenType (`.otf`) + +**Media:** +- MP4 video (`.mp4`) +- WebM video (`.webm`) +- MP3 audio (`.mp3`) +- WAV audio (`.wav`) + +Unknown file types are served as `application/octet-stream`. + +## URL Handling + +The server applies the following URL transformations: + +| Request URL | Resolved File | +|-------------|---------------| +| `/` | `index.html` | +| `/about` | `about.html` | +| `/contact` | `contact.html` | +| `/styles.css` | `styles.css` | +| `/page.html` | `page.html` | + +**Note:** URLs ending with `/` are resolved to `index.html`, and URLs without an extension get `.html` appended automatically. + +## Error Pages + +### 404 Not Found + +If a requested file doesn't exist, the server returns: +1. `pageNotFound.html` (if it exists in the web root) +2. Otherwise: Plain text "404 Not Found" + +To customize your 404 page, create `www/pageNotFound.html`. + +### 403 Forbidden + +Returned when a path traversal attack is detected (e.g., `GET /../../etc/passwd`). + +## Security Features + +### Path Traversal Protection + +The server validates all file paths to prevent directory traversal attacks: + +``` +✅ Allowed: /index.html +✅ Allowed: /docs/guide.pdf +❌ Blocked: /../../../etc/passwd +❌ Blocked: /www/../../../secret.txt +``` + +All blocked requests return `403 Forbidden`. -- ✅ No need for a `public class` declaration -- ✅ No `static` keyword required -- ✅ Great for quick scripts and learning +## Running Tests -To compile and run this, use: +```bash +mvn test +``` + +Test coverage includes: +- HTTP request parsing +- Response building +- MIME type detection +- Configuration loading +- Static file serving +- Path traversal security + +## Building for Production + +### Using Docker (recommended) ```bash -java --source 25 HelloWorld.java +docker build -t webserver . +docker run -d -p 8080:8080 -v $(pwd)/www:/www --name my-webserver webserver ``` ---- +### Running on a server + +```bash +# Compile the project +mvn clean compile + +# Run with nohup for background execution +nohup java -cp target/classes org.example.App > server.log 2>&1 & + +# Or use systemd (create /etc/systemd/system/webserver.service) +``` + +## Examples + +### Example 1: Serving a Simple Website + +**Directory structure:** +``` +www/ +├── index.html +├── styles.css +├── app.js +└── images/ + └── logo.png +``` + +**Access:** +- Homepage: `http://localhost:8080/` +- Stylesheet: `http://localhost:8080/styles.css` +- Logo: `http://localhost:8080/images/logo.png` + +### Example 2: Custom Port + +**application.yml:** +```yaml +server: + port: 3000 + rootDir: "./public" +``` + +Access at: `http://localhost:3000/` + +### Example 3: Different Web Root + +**application.yml:** +```yaml +server: + rootDir: "./dist" +``` + +Server will serve files from `dist/` instead of `www/`. + +## Architecture + +### Request Flow + +1. **TcpServer** accepts incoming TCP connections +2. **ConnectionHandler** creates a virtual thread for each request +3. **HttpParser** parses the HTTP request line and headers +4. **StaticFileHandler** resolves the file path and reads the file +5. **HttpResponseBuilder** constructs the HTTP response with correct headers +6. Response is written to the client socket + +### Filter Chain (Future Feature) + +The project includes a filter chain interface for future extensibility: +- Request/response filtering +- Authentication +- Logging +- Compression + +## Troubleshooting + +### Port already in use +``` +Error: Address already in use +``` +**Solution:** Change the port in `application.yml` or kill the process using port 8080: +```bash +# Linux/Mac +lsof -ti:8080 | xargs kill -9 + +# Windows +netstat -ano | findstr :8080 +taskkill /PID /F +``` + +### File not found but file exists +**Solution:** Check that the file is in the correct directory (`www/` by default) and that the filename matches exactly (case-sensitive on Linux/Mac). + +### Binary files (images/PDFs) are corrupted +**Solution:** This should not happen with the current implementation. The server uses `byte[]` internally to preserve binary data. If you see this issue, please report it as a bug. + +## Contributing + +1. Fork the repository +2. Create a feature branch (`git checkout -b feature/new-feature`) +3. Commit your changes (`git commit -m 'Add new feature'`) +4. Push to the branch (`git push origin feature/new-feature`) +5. Open a Pull Request + +
-## 📚 Learn More +### 👨‍💻 Built by Class JUV25G -This feature is part of Java’s ongoing effort to streamline syntax. You can explore deeper in [Baeldung’s guide to Unnamed Classes and Instance Main Methods](https://www.baeldung.com/java-21-unnamed-class-instance-main). +**Made with ❤️ and ☕ in Sweden** +
From 6950c14057b2747e0b98dc4881b319e8ffed48e2 Mon Sep 17 00:00:00 2001 From: Andreas Kaiberger <91787385+apaegs@users.noreply.github.com> Date: Thu, 19 Feb 2026 14:23:33 +0100 Subject: [PATCH 20/40] Fix: Path traversal vulnerability in StaticFileHandler (#65) * Prevent path traversal and sanitize URI in StaticFileHandler. * Add test for path traversal protection and support 403 responses. * Add tests for URI sanitization and handling of encoded/special URLs. * Add test for null byte injection prevention in StaticFileHandler * Improve StaticFileHandler path traversal handling and test coverage * Improve URI sanitization and add test for 404 response handling in StaticFileHandler --- .../java/org/example/StaticFileHandler.java | 22 ++++--- .../org/example/http/HttpResponseBuilder.java | 14 +---- .../org/example/StaticFileHandlerTest.java | 58 +++++++++++++++++++ 3 files changed, 75 insertions(+), 19 deletions(-) diff --git a/src/main/java/org/example/StaticFileHandler.java b/src/main/java/org/example/StaticFileHandler.java index 58f13379..756c87fd 100644 --- a/src/main/java/org/example/StaticFileHandler.java +++ b/src/main/java/org/example/StaticFileHandler.java @@ -23,25 +23,33 @@ public StaticFileHandler(String webRoot) { } private void handleGetRequest(String uri) throws IOException { - // Security: Prevent path traversal attacks (e.g. GET /../../etc/passwd) + // Sanitize URI + int q = uri.indexOf('?'); + if (q >= 0) uri = uri.substring(0, q); + int h = uri.indexOf('#'); + if (h >= 0) uri = uri.substring(0, h); + uri = uri.replace("\0", ""); + if (uri.startsWith("/")) uri = uri.substring(1); + + // Path traversal check File root = new File(WEB_ROOT).getCanonicalFile(); File file = new File(root, uri).getCanonicalFile(); - if (!file.toPath().startsWith(root.toPath())) { - fileBytes = "403 Forbidden".getBytes(); + fileBytes = "403 Forbidden".getBytes(java.nio.charset.StandardCharsets.UTF_8); statusCode = 403; return; } - if (file.exists()) { + // Read file + if (file.isFile()) { fileBytes = Files.readAllBytes(file.toPath()); statusCode = 200; } else { File errorFile = new File(WEB_ROOT, "pageNotFound.html"); - if (errorFile.exists()) { + if (errorFile.isFile()) { fileBytes = Files.readAllBytes(errorFile.toPath()); } else { - fileBytes = "404 Not Found".getBytes(); + fileBytes = "404 Not Found".getBytes(java.nio.charset.StandardCharsets.UTF_8); } statusCode = 404; } @@ -49,13 +57,11 @@ private void handleGetRequest(String uri) throws IOException { public void sendGetRequest(OutputStream outputStream, String uri) throws IOException { handleGetRequest(uri); - HttpResponseBuilder response = new HttpResponseBuilder(); response.setStatusCode(statusCode); // Use MimeTypeDetector instead of hardcoded text/html response.setContentTypeFromFilename(uri); response.setBody(fileBytes); - outputStream.write(response.build()); outputStream.flush(); } diff --git a/src/main/java/org/example/http/HttpResponseBuilder.java b/src/main/java/org/example/http/HttpResponseBuilder.java index db6a6958..8f55ebf2 100644 --- a/src/main/java/org/example/http/HttpResponseBuilder.java +++ b/src/main/java/org/example/http/HttpResponseBuilder.java @@ -36,14 +36,15 @@ public class HttpResponseBuilder { public void setStatusCode(int statusCode) { this.statusCode = statusCode; } + public void setBody(String body) { this.body = body != null ? body : ""; - this.bytebody = null; // Clear byte body when setting string body + this.bytebody = null; } public void setBody(byte[] body) { this.bytebody = body; - this.body = ""; // Clear string body when setting byte body + this.body = ""; } public void setHeaders(Map headers) { @@ -65,7 +66,6 @@ public void setContentTypeFromFilename(String filename) { * @return Complete HTTP response (headers + body) as byte[] */ public byte[] build() { - // Determine content body and length byte[] contentBody; int contentLength; @@ -77,10 +77,8 @@ public byte[] build() { contentLength = contentBody.length; } - // Build headers as String StringBuilder headerBuilder = new StringBuilder(); - // Status line String reason = REASON_PHRASES.getOrDefault(statusCode, ""); headerBuilder.append(PROTOCOL).append(" ").append(statusCode); if (!reason.isEmpty()) { @@ -88,26 +86,20 @@ public byte[] build() { } headerBuilder.append(CRLF); - // User-defined headers headers.forEach((k, v) -> headerBuilder.append(k).append(": ").append(v).append(CRLF)); - // Auto-append Content-Length if not set. if (!headers.containsKey("Content-Length")) { headerBuilder.append("Content-Length: ").append(contentLength).append(CRLF); } - // Auto-append Connection if not set. if (!headers.containsKey("Connection")) { headerBuilder.append("Connection: close").append(CRLF); } - // Blank line before body headerBuilder.append(CRLF); - // Convert headers to bytes byte[] headerBytes = headerBuilder.toString().getBytes(StandardCharsets.UTF_8); - // Combine headers + body into single byte array byte[] response = new byte[headerBytes.length + contentBody.length]; System.arraycopy(headerBytes, 0, response, 0, headerBytes.length); System.arraycopy(contentBody, 0, response, headerBytes.length, contentBody.length); diff --git a/src/test/java/org/example/StaticFileHandlerTest.java b/src/test/java/org/example/StaticFileHandlerTest.java index 31db5108..1fe4893b 100644 --- a/src/test/java/org/example/StaticFileHandlerTest.java +++ b/src/test/java/org/example/StaticFileHandlerTest.java @@ -2,6 +2,8 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.CsvSource; import java.io.ByteArrayOutputStream; import java.io.IOException; @@ -76,4 +78,60 @@ void test_file_that_does_not_exists_should_return_404() throws IOException { } + @Test + void test_path_traversal_should_return_403() throws IOException { + // Arrange + Path secret = tempDir.resolve("secret.txt"); + Files.writeString(secret,"TOP SECRET"); + Path webRoot = tempDir.resolve("www"); + Files.createDirectories(webRoot); + StaticFileHandler handler = new StaticFileHandler(webRoot.toString()); + ByteArrayOutputStream fakeOutput = new ByteArrayOutputStream(); + + // Act + handler.sendGetRequest(fakeOutput, "../secret.txt"); + + // Assert + String response = fakeOutput.toString(); + assertFalse(response.contains("TOP SECRET")); + assertTrue(response.contains("HTTP/1.1 403 Forbidden")); + } + + @ParameterizedTest + @CsvSource({ + "index.html?foo=bar", + "index.html#section", + "/index.html" + }) + void sanitized_uris_should_return_200(String uri) throws IOException { + // Arrange + Path webRoot = tempDir.resolve("www"); + Files.createDirectories(webRoot); + Files.writeString(webRoot.resolve("index.html"), "Hello"); + StaticFileHandler handler = new StaticFileHandler(webRoot.toString()); + ByteArrayOutputStream out = new ByteArrayOutputStream(); + + // Act + handler.sendGetRequest(out, uri); + + // Assert + assertTrue(out.toString().contains("HTTP/1.1 200 OK")); + } + + @Test + void null_byte_injection_should_not_return_200() throws IOException { + // Arrange + Path webRoot = tempDir.resolve("www"); + Files.createDirectories(webRoot); + StaticFileHandler handler = new StaticFileHandler(webRoot.toString()); + ByteArrayOutputStream out = new ByteArrayOutputStream(); + + // Act + handler.sendGetRequest(out, "index.html\0../../etc/passwd"); + + // Assert + String response = out.toString(); + assertFalse(response.contains("HTTP/1.1 200 OK")); + assertTrue(response.contains("HTTP/1.1 404 Not Found")); + } } From 78f7e21a1fffcf731bd5087425fcd24ed3cbfea4 Mon Sep 17 00:00:00 2001 From: viktorlindell12 Date: Mon, 23 Feb 2026 09:32:43 +0100 Subject: [PATCH 21/40] Resolve port: CLI > config > default (#29) * Resolve port: CLI > config > default * Wire port resolution to AppConfig/ConfigLoader and update docs/tests * Update PortConfigurationGuide.md * Update PortConfigurationGuide.md * Remove ServerPortResolver; use ConfigLoader for port * Update PortConfigurationGuide.md * Update PortConfigurationGuide.md * may be done --- PortConfigurationGuide.md | 49 +++++++++++++++++++ src/main/java/org/example/App.java | 41 +++++++++++++++- .../org/example/AppPortResolutionTest.java | 21 ++++++++ 3 files changed, 110 insertions(+), 1 deletion(-) create mode 100644 PortConfigurationGuide.md create mode 100644 src/test/java/org/example/AppPortResolutionTest.java diff --git a/PortConfigurationGuide.md b/PortConfigurationGuide.md new file mode 100644 index 00000000..622b5777 --- /dev/null +++ b/PortConfigurationGuide.md @@ -0,0 +1,49 @@ +# Konfiguration: port (CLI → config-fil → default) + +Det här projektet väljer vilken port servern ska starta på enligt följande prioritet: + +1. **CLI-argument** (`--port `) – högst prioritet +2. **Config-fil** (`application.yml`: `server.port`) +3. **Default** (`8080`) – används om port saknas i config eller om config-filen saknas + +--- + +## 1) Default-värde + +Om varken CLI eller config anger port används: + +- **8080** (default för `server.port` i `AppConfig`) + +--- + +## 2) Config-fil: `application.yml` + +### Var ska filen ligga? +Standard: +- `src/main/resources/application.yml` + +### Exempel +```yaml +server: +port: 9090 +``` + +--- + +## 3) CLI-argument + +CLI kan användas för att override:a config: + +```bash +java -cp target/classes org.example.App --port 8000 +``` + +--- + +## 4) Sammanfattning + +Prioritet: + +1. CLI (`--port`) +2. `application.yml` (`server.port`) +3. Default (`8080`) \ No newline at end of file diff --git a/src/main/java/org/example/App.java b/src/main/java/org/example/App.java index 408a1942..75c2914b 100644 --- a/src/main/java/org/example/App.java +++ b/src/main/java/org/example/App.java @@ -6,11 +6,50 @@ import java.nio.file.Path; public class App { + + private static final String PORT_FLAG = "--port"; + public static void main(String[] args) { Path configPath = Path.of("src/main/resources/application.yml"); AppConfig appConfig = ConfigLoader.loadOnce(configPath); - int port = appConfig.server().port(); + + int port = resolvePort(args, appConfig.server().port()); + new TcpServer(port).start(); } + + static int resolvePort(String[] args, int configPort) { + Integer cliPort = parsePortFromCli(args); + if (cliPort != null) { + return validatePort(cliPort, "CLI argument " + PORT_FLAG); + } + return validatePort(configPort, "configuration server.port"); + } + + static Integer parsePortFromCli(String[] args) { + if (args == null) return null; + + for (int i = 0; i < args.length; i++) { + if (PORT_FLAG.equals(args[i])) { + int valueIndex = i + 1; + if (valueIndex >= args.length) { + throw new IllegalArgumentException("Missing value after " + PORT_FLAG); + } + try { + return Integer.parseInt(args[valueIndex]); + } catch (NumberFormatException e) { + throw new IllegalArgumentException("Invalid port value after " + PORT_FLAG + ": " + args[valueIndex], e); + } + } + } + return null; + } + + static int validatePort(int port, String source) { + if (port < 1 || port > 65535) { + throw new IllegalArgumentException("Port out of range (1-65535) from " + source + ": " + port); + } + return port; + } } diff --git a/src/test/java/org/example/AppPortResolutionTest.java b/src/test/java/org/example/AppPortResolutionTest.java new file mode 100644 index 00000000..a406b6f1 --- /dev/null +++ b/src/test/java/org/example/AppPortResolutionTest.java @@ -0,0 +1,21 @@ +package org.example; + + +import org.junit.jupiter.api.Test; + +import static org.assertj.core.api.Assertions.assertThat; + +class AppPortResolutionTest { + + @Test + void cli_port_wins_over_config() { + int port = App.resolvePort(new String[]{"--port", "8000"}, 9090); + assertThat(port).isEqualTo(8000); + } + + @Test + void config_port_used_when_no_cli_arg() { + int port = App.resolvePort(new String[]{}, 9090); + assertThat(port).isEqualTo(9090); + } +} \ No newline at end of file From 86f2ba725a9362d9929e6a824149a42ea8aade7d Mon Sep 17 00:00:00 2001 From: Ebba Andersson Date: Mon, 23 Feb 2026 14:47:45 +0100 Subject: [PATCH 22/40] Refactor status codes to constants #71 (#77) * refactor: add predefined HTTP status code constants to HttpResponseBuilder * refactor: use status code constants in StaticFileHandler * test: refactor StaticFileHandlerTest to use status code constants * test: refactor HttpResponseBuilderTest to use status code constants and explicit assertations --- .../java/org/example/StaticFileHandler.java | 9 +-- .../org/example/http/HttpResponseBuilder.java | 64 +++++++++++++------ .../org/example/StaticFileHandlerTest.java | 13 ++-- .../example/http/HttpResponseBuilderTest.java | 22 ++++++- 4 files changed, 77 insertions(+), 31 deletions(-) diff --git a/src/main/java/org/example/StaticFileHandler.java b/src/main/java/org/example/StaticFileHandler.java index 756c87fd..8bcda375 100644 --- a/src/main/java/org/example/StaticFileHandler.java +++ b/src/main/java/org/example/StaticFileHandler.java @@ -1,6 +1,7 @@ package org.example; import org.example.http.HttpResponseBuilder; +import static org.example.http.HttpResponseBuilder.*; import java.io.File; import java.io.IOException; @@ -36,14 +37,14 @@ private void handleGetRequest(String uri) throws IOException { File file = new File(root, uri).getCanonicalFile(); if (!file.toPath().startsWith(root.toPath())) { fileBytes = "403 Forbidden".getBytes(java.nio.charset.StandardCharsets.UTF_8); - statusCode = 403; + statusCode = SC_FORBIDDEN; return; } // Read file if (file.isFile()) { fileBytes = Files.readAllBytes(file.toPath()); - statusCode = 200; + statusCode = SC_OK; } else { File errorFile = new File(WEB_ROOT, "pageNotFound.html"); if (errorFile.isFile()) { @@ -51,7 +52,7 @@ private void handleGetRequest(String uri) throws IOException { } else { fileBytes = "404 Not Found".getBytes(java.nio.charset.StandardCharsets.UTF_8); } - statusCode = 404; + statusCode = SC_NOT_FOUND; } } @@ -65,4 +66,4 @@ public void sendGetRequest(OutputStream outputStream, String uri) throws IOExcep outputStream.write(response.build()); outputStream.flush(); } -} \ No newline at end of file +} diff --git a/src/main/java/org/example/http/HttpResponseBuilder.java b/src/main/java/org/example/http/HttpResponseBuilder.java index 8f55ebf2..e84579e9 100644 --- a/src/main/java/org/example/http/HttpResponseBuilder.java +++ b/src/main/java/org/example/http/HttpResponseBuilder.java @@ -6,8 +6,35 @@ public class HttpResponseBuilder { + // SUCCESS + public static final int SC_OK = 200; + public static final int SC_CREATED = 201; + public static final int SC_NO_CONTENT = 204; + + // REDIRECTION + public static final int SC_MOVED_PERMANENTLY = 301; + public static final int SC_FOUND = 302; + public static final int SC_SEE_OTHER = 303; + public static final int SC_NOT_MODIFIED = 304; + public static final int SC_TEMPORARY_REDIRECT = 307; + public static final int SC_PERMANENT_REDIRECT = 308; + + // CLIENT ERROR + public static final int SC_BAD_REQUEST = 400; + public static final int SC_UNAUTHORIZED = 401; + public static final int SC_FORBIDDEN = 403; + public static final int SC_NOT_FOUND = 404; + + // SERVER ERROR + public static final int SC_INTERNAL_SERVER_ERROR = 500; + public static final int SC_BAD_GATEWAY = 502; + public static final int SC_SERVICE_UNAVAILABLE = 503; + public static final int SC_GATEWAY_TIMEOUT = 504; + + + private static final String PROTOCOL = "HTTP/1.1"; - private int statusCode = 200; + private int statusCode = SC_OK; private String body = ""; private byte[] bytebody; private Map headers = new TreeMap<>(String.CASE_INSENSITIVE_ORDER); @@ -15,22 +42,23 @@ public class HttpResponseBuilder { private static final String CRLF = "\r\n"; private static final Map REASON_PHRASES = Map.ofEntries( - Map.entry(200, "OK"), - Map.entry(201, "Created"), - Map.entry(204, "No Content"), - Map.entry(301, "Moved Permanently"), - Map.entry(302, "Found"), - Map.entry(303, "See Other"), - Map.entry(304, "Not Modified"), - Map.entry(307, "Temporary Redirect"), - Map.entry(308, "Permanent Redirect"), - Map.entry(400, "Bad Request"), - Map.entry(401, "Unauthorized"), - Map.entry(403, "Forbidden"), - Map.entry(404, "Not Found"), - Map.entry(500, "Internal Server Error"), - Map.entry(502, "Bad Gateway"), - Map.entry(503, "Service Unavailable") + Map.entry(SC_OK, "OK"), + Map.entry(SC_CREATED, "Created"), + Map.entry(SC_NO_CONTENT, "No Content"), + Map.entry(SC_MOVED_PERMANENTLY, "Moved Permanently"), + Map.entry(SC_FOUND, "Found"), + Map.entry(SC_SEE_OTHER, "See Other"), + Map.entry(SC_NOT_MODIFIED, "Not Modified"), + Map.entry(SC_TEMPORARY_REDIRECT, "Temporary Redirect"), + Map.entry(SC_PERMANENT_REDIRECT, "Permanent Redirect"), + Map.entry(SC_BAD_REQUEST, "Bad Request"), + Map.entry(SC_UNAUTHORIZED, "Unauthorized"), + Map.entry(SC_FORBIDDEN, "Forbidden"), + Map.entry(SC_NOT_FOUND, "Not Found"), + Map.entry(SC_INTERNAL_SERVER_ERROR, "Internal Server Error"), + Map.entry(SC_BAD_GATEWAY, "Bad Gateway"), + Map.entry(SC_SERVICE_UNAVAILABLE, "Service Unavailable"), + Map.entry(SC_GATEWAY_TIMEOUT, "Gateway Timeout") ); public void setStatusCode(int statusCode) { @@ -106,4 +134,4 @@ public byte[] build() { return response; } -} \ No newline at end of file +} diff --git a/src/test/java/org/example/StaticFileHandlerTest.java b/src/test/java/org/example/StaticFileHandlerTest.java index 1fe4893b..ce6feb7a 100644 --- a/src/test/java/org/example/StaticFileHandlerTest.java +++ b/src/test/java/org/example/StaticFileHandlerTest.java @@ -10,6 +10,7 @@ import java.nio.file.Files; import java.nio.file.Path; import static org.junit.jupiter.api.Assertions.*; +import static org.example.http.HttpResponseBuilder.*; /** * Unit test class for verifying the behavior of the StaticFileHandler class. @@ -48,7 +49,7 @@ void test_file_that_exists_should_return_200() throws IOException { //Assert String response = fakeOutput.toString();//Converts the captured byte stream into a String for verification - assertTrue(response.contains("HTTP/1.1 200 OK")); // Assert the status + assertTrue(response.contains("HTTP/1.1 " + SC_OK + " OK")); // Assert the status assertTrue(response.contains("Hello Test")); //Assert the content in the file assertTrue(response.contains("Content-Type: text/html; charset=UTF-8")); // Verify the correct Content-type header @@ -74,7 +75,7 @@ void test_file_that_does_not_exists_should_return_404() throws IOException { //Assert String response = fakeOutput.toString();//Converts the captured byte stream into a String for verification - assertTrue(response.contains("HTTP/1.1 404 Not Found")); // Assert the status + assertTrue(response.contains("HTTP/1.1 " + SC_NOT_FOUND + " Not Found")); // Assert the status } @@ -94,7 +95,7 @@ void test_path_traversal_should_return_403() throws IOException { // Assert String response = fakeOutput.toString(); assertFalse(response.contains("TOP SECRET")); - assertTrue(response.contains("HTTP/1.1 403 Forbidden")); + assertTrue(response.contains("HTTP/1.1 " + SC_FORBIDDEN + " Forbidden")); } @ParameterizedTest @@ -115,7 +116,7 @@ void sanitized_uris_should_return_200(String uri) throws IOException { handler.sendGetRequest(out, uri); // Assert - assertTrue(out.toString().contains("HTTP/1.1 200 OK")); + assertTrue(out.toString().contains("HTTP/1.1 " + SC_OK + " OK")); } @Test @@ -131,7 +132,7 @@ void null_byte_injection_should_not_return_200() throws IOException { // Assert String response = out.toString(); - assertFalse(response.contains("HTTP/1.1 200 OK")); - assertTrue(response.contains("HTTP/1.1 404 Not Found")); + assertFalse(response.contains("HTTP/1.1 " + SC_OK + " OK")); + assertTrue(response.contains("HTTP/1.1 " + SC_NOT_FOUND + " Not Found")); } } diff --git a/src/test/java/org/example/http/HttpResponseBuilderTest.java b/src/test/java/org/example/http/HttpResponseBuilderTest.java index b278ae19..5363d5cf 100644 --- a/src/test/java/org/example/http/HttpResponseBuilderTest.java +++ b/src/test/java/org/example/http/HttpResponseBuilderTest.java @@ -14,6 +14,7 @@ import java.util.stream.Stream; import static org.assertj.core.api.Assertions.assertThat; +import static org.example.http.HttpResponseBuilder.*; class HttpResponseBuilderTest { @@ -25,13 +26,14 @@ private String asString(byte[] response) { @Test void build_returnsValidHttpResponse() { HttpResponseBuilder builder = new HttpResponseBuilder(); + builder.setStatusCode(SC_OK); builder.setBody("Hello"); byte[] result = builder.build(); String resultStr = asString(result); assertThat(resultStr) - .contains("HTTP/1.1 200 OK") + .contains("HTTP/1.1 " + SC_OK + " OK") .contains("Content-Length: 5") .contains("\r\n\r\n") .contains("Hello"); @@ -49,6 +51,7 @@ void build_returnsValidHttpResponse() { @DisplayName("Should calculate correct Content-Length for various strings") void build_handlesUtf8ContentLength(String body, int expectedLength) { HttpResponseBuilder builder = new HttpResponseBuilder(); + builder.setStatusCode(SC_OK); builder.setBody(body); byte[] result = builder.build(); @@ -62,6 +65,7 @@ void build_handlesUtf8ContentLength(String body, int expectedLength) { void setHeader_addsHeaderToResponse() { HttpResponseBuilder builder = new HttpResponseBuilder(); builder.setHeader("Content-Type", "text/html; charset=UTF-8"); + builder.setStatusCode(SC_OK); builder.setBody("Hello"); byte[] result = builder.build(); @@ -76,6 +80,7 @@ void setHeader_allowsMultipleHeaders() { HttpResponseBuilder builder = new HttpResponseBuilder(); builder.setHeader("Content-Type", "application/json"); builder.setHeader("Cache-Control", "no-cache"); + builder.setStatusCode(SC_OK); builder.setBody("{}"); byte[] result = builder.build(); @@ -107,6 +112,7 @@ void setHeader_allowsMultipleHeaders() { void setContentTypeFromFilename_detectsVariousTypes(String filename, String expectedContentType) { HttpResponseBuilder builder = new HttpResponseBuilder(); builder.setContentTypeFromFilename(filename); + builder.setStatusCode(SC_OK); builder.setBody("test content"); byte[] result = builder.build(); @@ -130,6 +136,7 @@ void setContentTypeFromFilename_detectsVariousTypes(String filename, String expe void setContentTypeFromFilename_allCases(String filename, String expectedContentType) { HttpResponseBuilder builder = new HttpResponseBuilder(); builder.setContentTypeFromFilename(filename); + builder.setStatusCode(SC_OK); builder.setBody("test"); byte[] result = builder.build(); @@ -143,6 +150,7 @@ void setContentTypeFromFilename_allCases(String filename, String expectedContent @DisplayName("Should not duplicate headers when manually set") void build_doesNotDuplicateHeaders(String headerName, String manualValue, String bodyContent) { HttpResponseBuilder builder = new HttpResponseBuilder(); + builder.setStatusCode(SC_OK); builder.setHeader(headerName, manualValue); builder.setBody(bodyContent); @@ -179,6 +187,7 @@ void setHeaders_preservesCaseInsensitivity() { builder.setHeaders(headers); builder.setHeader("Content-Length", "100"); + builder.setStatusCode(SC_OK); builder.setBody("Hello"); byte[] result = builder.build(); @@ -287,6 +296,7 @@ void build_handlesUnknownStatusCodes(int statusCode) { @DisplayName("Should auto-append headers when not manually set") void build_autoAppendsHeadersWhenNotSet() { HttpResponseBuilder builder = new HttpResponseBuilder(); + builder.setStatusCode(SC_OK); builder.setBody("Hello"); byte[] result = builder.build(); @@ -303,6 +313,7 @@ void build_combinesCustomAndAutoHeaders() { HttpResponseBuilder builder = new HttpResponseBuilder(); builder.setHeader("Content-Type", "text/html"); builder.setHeader("Cache-Control", "no-cache"); + builder.setStatusCode(SC_OK); builder.setBody("Hello"); byte[] result = builder.build(); @@ -328,6 +339,7 @@ void setHeader_caseInsensitive(String headerName, String headerValue) { HttpResponseBuilder builder = new HttpResponseBuilder(); builder.setHeader(headerName, headerValue); + builder.setStatusCode(SC_OK); builder.setBody("Hello"); byte[] result = builder.build(); @@ -350,13 +362,14 @@ void setHeader_caseInsensitive(String headerName, String headerValue) { @DisplayName("Should handle empty and null body") void build_emptyAndNullBody(String body, int expectedLength) { HttpResponseBuilder builder = new HttpResponseBuilder(); + builder.setStatusCode(SC_OK); builder.setBody(body); byte[] result = builder.build(); String resultStr = asString(result); assertThat(resultStr) - .contains("HTTP/1.1 200 OK") + .contains("HTTP/1.1 " + SC_OK + " OK") .contains("Content-Length: " + expectedLength); } @@ -373,6 +386,7 @@ void setHeader_overridesPreviousValue(String headerName, String firstValue, Stri HttpResponseBuilder builder = new HttpResponseBuilder(); builder.setHeader(headerName, firstValue); builder.setHeader(headerName, secondValue); // Override + builder.setStatusCode(SC_OK); builder.setBody("Test"); byte[] result = builder.build(); @@ -390,6 +404,7 @@ void setHeader_overridesPreviousValue(String headerName, String firstValue, Stri void build_autoAppendsSpecificHeaders(String body, boolean setContentLength, boolean setConnection, String expectedContentLength, String expectedConnection) { HttpResponseBuilder builder = new HttpResponseBuilder(); + builder.setStatusCode(SC_OK); if (setContentLength) { builder.setHeader("Content-Length", "999"); @@ -425,6 +440,7 @@ private static Stream provideAutoAppendScenarios() { @DisplayName("Should preserve binary content without corruption") void build_preservesBinaryContent() { HttpResponseBuilder builder = new HttpResponseBuilder(); + builder.setStatusCode(SC_OK); // Create binary data with non-UTF-8 bytes byte[] binaryData = new byte[]{ @@ -455,4 +471,4 @@ void build_preservesBinaryContent() { assertThat(actualBody).isEqualTo(binaryData); } -} \ No newline at end of file +} From 103178ab24538e2112d35f4a82056f97cfe1cef2 Mon Sep 17 00:00:00 2001 From: Johan Karlsson <93186588+gurkvatten@users.noreply.github.com> Date: Tue, 24 Feb 2026 13:19:33 +0100 Subject: [PATCH 23/40] fixed file path (#86) --- Dockerfile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index ee7e511e..2976670e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -9,8 +9,8 @@ FROM eclipse-temurin:25-jre-alpine EXPOSE 8080 RUN addgroup -S appgroup && adduser -S appuser -G appgroup WORKDIR /app/ -COPY --from=build /build/target/classes/ / -COPY --from=build /build/target/dependency/ /dependencies/ +COPY --from=build /build/target/classes/ /app/ +COPY --from=build /build/target/dependency/ /app/dependencies/ COPY /www/ /www/ USER appuser -ENTRYPOINT ["java", "-classpath", "/app:/dependencies/*", "org.example.App"] +ENTRYPOINT ["java", "-classpath", "/app:/app/dependencies/*", "org.example.App"] From e72f0730df605c758a9d3ac8392e54fa8c056200 Mon Sep 17 00:00:00 2001 From: Caroline Nordbrandt Date: Tue, 24 Feb 2026 14:40:55 +0100 Subject: [PATCH 24/40] Fix path in Dockerfile for `www` directory copy operation (#87) * Fix path in Dockerfile for `www` directory copy operation * Correct relative path for `www` directory in Dockerfile copy operation --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 2976670e..635cbbff 100644 --- a/Dockerfile +++ b/Dockerfile @@ -11,6 +11,6 @@ RUN addgroup -S appgroup && adduser -S appuser -G appgroup WORKDIR /app/ COPY --from=build /build/target/classes/ /app/ COPY --from=build /build/target/dependency/ /app/dependencies/ -COPY /www/ /www/ +COPY www/ ./www/ USER appuser ENTRYPOINT ["java", "-classpath", "/app:/app/dependencies/*", "org.example.App"] From ff4cd1260195a7446a638409bf2e852e0b2f488a Mon Sep 17 00:00:00 2001 From: Andreas Kaiberger <91787385+apaegs@users.noreply.github.com> Date: Tue, 24 Feb 2026 15:00:45 +0100 Subject: [PATCH 25/40] Feature/27 ipfilter (#70) * Add IpFilter and corresponding test skeleton Co-authored-by: Rickard Ankar * Extend IpFilter with blocklist mode and add unit tests Co-authored-by: Rickard Ankar * Enhance IpFilter to return 403 for blocked IPs and add corresponding test case Co-authored-by: Rickard Ankar * Extend IpFilter with allowlist mode and add corresponding unit tests Co-authored-by: Rickard Ankar * Refactor IpFilter to support both allowlist and blocklist modes, update logic, and add unit tests for allowlist mode Co-authored-by: Rickard Ankar * Handle missing client IP in IpFilter, return 400 response, and add corresponding test case Co-authored-by: Rickard Ankar * Refactor tests in `IpFilterTest` to use `assertAll` for improved assertion grouping and readability Co-authored-by: Rickard Ankar * Refactor `IpFilter` to use `HttpResponse` instead of `HttpResponseBuilder` and update tests accordingly Co-authored-by: Rickard Ankar * Add unit tests for edge cases in `IpFilter` allowlist and blocklist modes Co-authored-by: Rickard Ankar * Refactor `IpFilter` and tests to use `HttpResponseBuilder` instead of `HttpResponse` Co-authored-by: Rickard Ankar * Handle empty client IP in `IpFilter`, return 400 response, and add corresponding test case Co-authored-by: Rickard Ankar * Add comments to `IpFilter` empty methods, clarifying no action is required Co-authored-by: Rickard Ankar * Fix typos in comments within `IpFilterTest` Co-authored-by: Rickard Ankar * Add Javadoc comments to `IpFilter` and `IpFilterTest` for improved clarity and documentation * Refactor `IpFilter` to use thread-safe collections and normalize IP addresses * Make `mode` field in `IpFilter` volatile to ensure thread safety * Ensure UTF-8 encoding for response string in `IpFilterTest` and add attribute management to `HttpRequest` * Ensure UTF-8 encoding for response string in `IpFilterTest` and add attribute management to `HttpRequest` Co-authored-by: Rickard Ankar * Integrate IP filtering into `ConnectionHandler` and update configuration to support filter settings Co-authored-by: Rickard Ankar * Refactor IP filter check in `ConnectionHandler` to use `Boolean.TRUE.equals` for improved null safety Co-authored-by: Rickard Ankar * Validate null inputs for allowed/blocked IPs in `IpFilter`, enhance test coverage, and fix typographical error in comments Co-authored-by: Rickard Ankar * refactor: extract applyFilters() method using FilterChainImpl Co-authored-by: Andreas Kaiberger * refactor: cache filter list at construction time Co-authored-by: Andreas Kaiberger * refactor: cache filter list at construction time Co-authored-by: Andreas Kaiberger * test: verify GPG signing * Replace hardcoded status codes in `IpFilter` and `ConnectionHandler` with constants from `HttpResponseBuilder` for better maintainability Co-authored-by: Rickard Ankar --------- Co-authored-by: Rickard Ankar --- .../java/org/example/ConnectionHandler.java | 80 ++++++- .../java/org/example/config/AppConfig.java | 32 ++- .../java/org/example/filter/IpFilter.java | 108 ++++++++++ .../org/example/http/HttpResponseBuilder.java | 4 + .../org/example/httpparser/HttpRequest.java | 8 + src/main/resources/application.yml | 8 +- .../java/org/example/filter/IpFilterTest.java | 203 ++++++++++++++++++ 7 files changed, 438 insertions(+), 5 deletions(-) create mode 100644 src/main/java/org/example/filter/IpFilter.java create mode 100644 src/test/java/org/example/filter/IpFilterTest.java diff --git a/src/main/java/org/example/ConnectionHandler.java b/src/main/java/org/example/ConnectionHandler.java index 1a0861ff..9fc219d4 100644 --- a/src/main/java/org/example/ConnectionHandler.java +++ b/src/main/java/org/example/ConnectionHandler.java @@ -1,6 +1,15 @@ package org.example; +import org.example.config.AppConfig; +import org.example.filter.IpFilter; import org.example.httpparser.HttpParser; +import org.example.httpparser.HttpRequest; +import java.util.ArrayList; +import java.util.List; +import org.example.filter.Filter; +import org.example.filter.FilterChainImpl; +import org.example.http.HttpResponseBuilder; +import org.example.config.ConfigLoader; import java.io.IOException; import java.net.Socket; @@ -9,21 +18,66 @@ public class ConnectionHandler implements AutoCloseable { Socket client; String uri; + private final List filters; public ConnectionHandler(Socket client) { this.client = client; + this.filters = buildFilters(); } +private List buildFilters() { + List list = new ArrayList<>(); + AppConfig config = ConfigLoader.get(); + AppConfig.IpFilterConfig ipFilterConfig = config.ipFilter(); + if (Boolean.TRUE.equals(ipFilterConfig.enabled())) { + list.add(createIpFilterFromConfig(ipFilterConfig)); + } + // Add more filters here... + return list; + } + public void runConnectionHandler() throws IOException { - StaticFileHandler sfh = new StaticFileHandler(); HttpParser parser = new HttpParser(); parser.setReader(client.getInputStream()); parser.parseRequest(); parser.parseHttp(); + + HttpRequest request = new HttpRequest( + parser.getMethod(), + parser.getUri(), + parser.getVersion(), + parser.getHeadersMap(), + "" + ); + + String clientIp = client.getInetAddress().getHostAddress(); + request.setAttribute("clientIp", clientIp); + + HttpResponseBuilder response = applyFilters(request); + + int statusCode = response.getStatusCode(); + if (statusCode == HttpResponseBuilder.SC_FORBIDDEN || + statusCode == HttpResponseBuilder.SC_BAD_REQUEST) { + byte[] responseBytes = response.build(); + client.getOutputStream().write(responseBytes); + client.getOutputStream().flush(); + return; + } + resolveTargetFile(parser.getUri()); + StaticFileHandler sfh = new StaticFileHandler(); sfh.sendGetRequest(client.getOutputStream(), uri); } + private HttpResponseBuilder applyFilters(HttpRequest request) { + HttpResponseBuilder response = new HttpResponseBuilder(); + + FilterChainImpl chain = new FilterChainImpl(filters); + chain.doFilter(request, response); + + return response; + } + private void resolveTargetFile(String uri) { if (uri.matches("/$")) { //matches(/) this.uri = "index.html"; @@ -39,4 +93,28 @@ private void resolveTargetFile(String uri) { public void close() throws Exception { client.close(); } + + private IpFilter createIpFilterFromConfig(AppConfig.IpFilterConfig config) { + IpFilter filter = new IpFilter(); + + // Set mode + if ("ALLOWLIST".equalsIgnoreCase(config.mode())) { + filter.setMode(IpFilter.FilterMode.ALLOWLIST); + } else { + filter.setMode(IpFilter.FilterMode.BLOCKLIST); + } + + // Add blocked IPs + for (String ip : config.blockedIps()) { + filter.addBlockedIp(ip); + } + + // Add allowed IPs + for (String ip : config.allowedIps()) { + filter.addAllowedIp(ip); + } + + filter.init(); + return filter; + } } diff --git a/src/main/java/org/example/config/AppConfig.java b/src/main/java/org/example/config/AppConfig.java index 00134b20..db689ed5 100644 --- a/src/main/java/org/example/config/AppConfig.java +++ b/src/main/java/org/example/config/AppConfig.java @@ -6,16 +6,22 @@ @JsonIgnoreProperties(ignoreUnknown = true) public record AppConfig( @JsonProperty("server") ServerConfig server, - @JsonProperty("logging") LoggingConfig logging + @JsonProperty("logging") LoggingConfig logging, + @JsonProperty("ipFilter") IpFilterConfig ipFilter ) { public static AppConfig defaults() { - return new AppConfig(ServerConfig.defaults(), LoggingConfig.defaults()); + return new AppConfig( + ServerConfig.defaults(), + LoggingConfig.defaults(), + IpFilterConfig.defaults() + ); } public AppConfig withDefaultsApplied() { ServerConfig serverConfig = (server == null ? ServerConfig.defaults() : server.withDefaultsApplied()); LoggingConfig loggingConfig = (logging == null ? LoggingConfig.defaults() : logging.withDefaultsApplied()); - return new AppConfig(serverConfig, loggingConfig); + IpFilterConfig ipFilterConfig = (ipFilter == null ? IpFilterConfig.defaults() : ipFilter.withDefaultsApplied()); // ← LÄGG TILL + return new AppConfig(serverConfig, loggingConfig, ipFilterConfig); // ← UPPDATERA DENNA RAD } @JsonIgnoreProperties(ignoreUnknown = true) @@ -50,4 +56,24 @@ public LoggingConfig withDefaultsApplied() { return new LoggingConfig(lvl); } } + + @JsonIgnoreProperties(ignoreUnknown = true) + public record IpFilterConfig( + @JsonProperty("enabled") Boolean enabled, + @JsonProperty("mode") String mode, + @JsonProperty("blockedIps") java.util.List blockedIps, + @JsonProperty("allowedIps") java.util.List allowedIps + ) { + public static IpFilterConfig defaults() { + return new IpFilterConfig(false, "BLOCKLIST", java.util.List.of(), java.util.List.of()); + } + + public IpFilterConfig withDefaultsApplied() { + Boolean e = (enabled == null) ? false : enabled; + String m = (mode == null || mode.isBlank()) ? "BLOCKLIST" : mode; + java.util.List blocked = (blockedIps == null) ? java.util.List.of() : blockedIps; + java.util.List allowed = (allowedIps == null) ? java.util.List.of() : allowedIps; + return new IpFilterConfig(e, m, blocked, allowed); + } + } } diff --git a/src/main/java/org/example/filter/IpFilter.java b/src/main/java/org/example/filter/IpFilter.java new file mode 100644 index 00000000..e9c877f2 --- /dev/null +++ b/src/main/java/org/example/filter/IpFilter.java @@ -0,0 +1,108 @@ +package org.example.filter; + + +import org.example.http.HttpResponseBuilder; +import org.example.httpparser.HttpRequest; + +import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; + +/** + * A filter that allows or blocks HTTP requests based on the client's IP address. + * The filter supports two modes: + * ALLOWLIST – only IP addresses in the allowlist are permitted + * BLOCKLIST – all IP addresses are permitted except those in the blocklist + */ +public class IpFilter implements Filter { + + private final Set blockedIps = ConcurrentHashMap.newKeySet(); + private final Set allowedIps = ConcurrentHashMap.newKeySet(); + private volatile FilterMode mode = FilterMode.BLOCKLIST; + + /** + * Defines the filtering mode. + */ + public enum FilterMode { + ALLOWLIST, + BLOCKLIST + } + + @Override + public void init() { + // Intentionally empty - no initialization needed + } + + /** + * Filters incoming HTTP requests based on the client's IP address. + * + * @param request the incoming HTTP request + * @param response the HTTP response builder used when blocking requests + * @param chain the filter chain to continue if the request is allowed + */ + @Override + public void doFilter(HttpRequest request, HttpResponseBuilder response, FilterChain chain) { + String clientIp = normalizeIp((String) request.getAttribute("clientIp")); + + if (clientIp == null || clientIp.trim().isEmpty()) { + response.setStatusCode(HttpResponseBuilder.SC_BAD_REQUEST); + response.setBody("Bad Request: Missing client IP address"); + return; + } + + boolean allowed = isIpAllowed(clientIp); + + if (allowed) { + chain.doFilter(request, response); + } else { + response.setStatusCode(HttpResponseBuilder.SC_FORBIDDEN); + response.setBody("Forbidden: IP address " + clientIp + " is not allowed"); + } + } + + @Override + public void destroy() { + // Intentionally empty - no cleanup needed + } + + /** + * Determines whether an IP address is allowed based on the current filter mode. + * + * @param ip the IP address to check + * @return true if the IP address is allowed, otherwise false + */ + private boolean isIpAllowed(String ip) { + if (mode == FilterMode.ALLOWLIST) { + return allowedIps.contains(ip); + } else { + return !blockedIps.contains(ip); + } + } + + /** + * Trims leading and trailing whitespace from an IP address. + * + * @param ip the IP address + * @return the trimmed IP address, or {@code null} if the input is {@code null} + */ + private String normalizeIp(String ip) { + return ip == null ? null : ip.trim(); + } + + public void setMode(FilterMode mode) { + this.mode = mode; + } + + public void addBlockedIp(String ip) { + if (ip == null) { + throw new IllegalArgumentException("IP address cannot be null"); + } + blockedIps.add(normalizeIp(ip)); + } + + public void addAllowedIp(String ip) { + if (ip == null) { + throw new IllegalArgumentException("IP address cannot be null"); + } + allowedIps.add(normalizeIp(ip)); + } +} diff --git a/src/main/java/org/example/http/HttpResponseBuilder.java b/src/main/java/org/example/http/HttpResponseBuilder.java index e84579e9..9b6ed2a7 100644 --- a/src/main/java/org/example/http/HttpResponseBuilder.java +++ b/src/main/java/org/example/http/HttpResponseBuilder.java @@ -65,6 +65,10 @@ public void setStatusCode(int statusCode) { this.statusCode = statusCode; } + public int getStatusCode() { + return this.statusCode; + } + public void setBody(String body) { this.body = body != null ? body : ""; this.bytebody = null; diff --git a/src/main/java/org/example/httpparser/HttpRequest.java b/src/main/java/org/example/httpparser/HttpRequest.java index ad65d496..18f0e561 100644 --- a/src/main/java/org/example/httpparser/HttpRequest.java +++ b/src/main/java/org/example/httpparser/HttpRequest.java @@ -1,6 +1,7 @@ package org.example.httpparser; import java.util.Collections; +import java.util.HashMap; import java.util.Map; /* @@ -15,6 +16,7 @@ public class HttpRequest { private final String version; private final Map headers; private final String body; + private final Map attributes = new HashMap<>(); public HttpRequest(String method, String path, @@ -38,4 +40,10 @@ public Map getHeaders() { return headers; } public String getBody() { return body; } + public void setAttribute(String key, Object value) { + attributes.put(key, value); + } + public Object getAttribute(String key) { + return attributes.get(key); + } } diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 8f2ef3a7..a57443be 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -3,4 +3,10 @@ server: rootDir: ./www logging: - level: INFO \ No newline at end of file + level: INFO + +ipFilter: + enabled: false + mode: "BLOCKLIST" + blockedIps: [ ] + allowedIps: [ ] diff --git a/src/test/java/org/example/filter/IpFilterTest.java b/src/test/java/org/example/filter/IpFilterTest.java new file mode 100644 index 00000000..3b556b43 --- /dev/null +++ b/src/test/java/org/example/filter/IpFilterTest.java @@ -0,0 +1,203 @@ +package org.example.filter; + +import org.example.http.HttpResponseBuilder; +import org.example.httpparser.HttpRequest; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import java.nio.charset.StandardCharsets; +import java.util.Collections; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; +import static org.junit.jupiter.api.Assertions.assertAll; + +/** + * Integration tests for IpFilter. + * Verifies behavior in both ALLOWLIST and BLOCKLIST modes. + */ +class IpFilterTest { + + private IpFilter ipFilter; + private HttpResponseBuilder response; + private FilterChain mockChain; + private boolean chainCalled; + + @BeforeEach + void setUp() { + ipFilter = new IpFilter(); + response = new HttpResponseBuilder(); + chainCalled = false; + mockChain = (req, resp) -> chainCalled = true; + } + + @Test + void testBlocklistMode_AllowsUnblockedIp() { + // ARRANGE + ipFilter.setMode(IpFilter.FilterMode.BLOCKLIST); + ipFilter.addBlockedIp("192.168.1.100"); + ipFilter.init(); + + HttpRequest request = createRequestWithIp("192.168.1.50"); + + // ACT + ipFilter.doFilter(request, response, mockChain); + + // ASSERT + assertThat(chainCalled).isTrue(); + } + + @Test + void testBlocklistMode_BlocksBlockedIp() { + // ARRANGE + ipFilter.setMode(IpFilter.FilterMode.BLOCKLIST); + ipFilter.addBlockedIp("192.168.1.100"); + ipFilter.init(); + + HttpRequest request = createRequestWithIp("192.168.1.100"); + + // ACT + ipFilter.doFilter(request, response, mockChain); + + // ASSERT + String result = new String(response.build(), StandardCharsets.UTF_8); + assertAll( + () -> assertThat(chainCalled).isFalse(), + () -> assertThat(result).contains("403"), + () -> assertThat(result).contains("Forbidden") + ); + } + + @Test + void testAllowListMode_AllowsWhitelistedIp() { + // ARRANGE + ipFilter.setMode(IpFilter.FilterMode.ALLOWLIST); + ipFilter.addAllowedIp("10.0.0.1"); + ipFilter.init(); + + HttpRequest request = createRequestWithIp("10.0.0.1"); + + // ACT + ipFilter.doFilter(request, response, mockChain); + + // ASSERT + assertThat(chainCalled).isTrue(); + } + + @Test + void testAllowListMode_BlockNonWhitelistedIp() { + // ARRANGE + ipFilter.setMode(IpFilter.FilterMode.ALLOWLIST); + ipFilter.addAllowedIp("10.0.0.1"); + ipFilter.init(); + + HttpRequest request = createRequestWithIp("10.0.0.2"); + + // ACT + ipFilter.doFilter(request, response, mockChain); + + // ASSERT + assertThat(chainCalled).isFalse(); + + String result = new String(response.build(), StandardCharsets.UTF_8); + assertThat(result).contains("403"); + } + + @Test + void testMissingClientIp_Returns400() { + // ARRANGE + HttpRequest request = new HttpRequest( + "GET", + "/", + "HTTP/1.1", + Collections.emptyMap(), + "" + ); + + // ACT + ipFilter.doFilter(request, response, mockChain); + + // ASSERT + String result = new String(response.build(), StandardCharsets.UTF_8); + assertAll( + () -> assertThat(chainCalled).isFalse(), + () -> assertThat(result).contains("400"), + () -> assertThat(result).contains("Bad Request") + ); + } + + private HttpRequest createRequestWithIp(String ip) { + HttpRequest request = new HttpRequest( + "GET", + "/", + "HTTP/1.1", + Collections.emptyMap(), + "" + ); + request.setAttribute("clientIp", ip); + return request; + } + + // EDGE CASES + + @Test + void testEmptyAllowlist_BlocksAllIps() { + // ARRANGE + ipFilter.setMode(IpFilter.FilterMode.ALLOWLIST); + // Do not add Ip to the list + + // ACT + HttpRequest request = createRequestWithIp("1.2.3.4"); + ipFilter.doFilter(request, response, mockChain); + + // ASSERT + assertThat(chainCalled).isFalse(); + } + + @Test + void testEmptyBlocklist_AllowAllIps() { + // ARRANGE + ipFilter.setMode(IpFilter.FilterMode.BLOCKLIST); + // Do not add Ip to the list + + // ACT + HttpRequest request = createRequestWithIp("1.2.3.4"); + ipFilter.doFilter(request, response, mockChain); + + // ASSERT + assertThat(chainCalled).isTrue(); + } + + @Test + void testEmptyStringIp() { + // ARRANGE + ipFilter.setMode(IpFilter.FilterMode.BLOCKLIST); + HttpRequest request = createRequestWithIp(""); + + // ACT + ipFilter.doFilter(request, response, mockChain); + + // ASSERT + String result = new String(response.build(), StandardCharsets.UTF_8); + assertAll( + () -> assertThat(chainCalled).isFalse(), + () -> assertThat(result).contains("400"), + () -> assertThat(result).contains("Bad Request") + ); + } + + @Test + void testAddBlockedIp_ThrowsOnNull() { + assertThatThrownBy(() -> ipFilter.addBlockedIp(null)) + .isInstanceOf(IllegalArgumentException.class) + .hasMessageContaining("cannot be null"); + } + + @Test + void testAddAllowedIp_ThrowsOnNull() { + assertThatThrownBy(() -> ipFilter.addAllowedIp(null)) + .isInstanceOf(IllegalArgumentException.class) + .hasMessageContaining("cannot be null"); + } + +} From 7652687af167b0ad9be4b1a83f26fd3d3c619b48 Mon Sep 17 00:00:00 2001 From: AntonAhlqvist Date: Wed, 25 Feb 2026 08:48:17 +0100 Subject: [PATCH 26/40] Feature/LocaleFilter (#81) * Re-commit LocaleFilter + tests to clean branch for PR * Update LocaleFilter to handle quality weights and improve javadoc * Fix: rename test method to reflect actual headers scenario * Fix: ensure resolveLocale never returns empty string; strip quality weights --- .../java/org/example/filter/LocaleFilter.java | 98 +++++++++++++++++++ .../org/example/filter/LocaleFilterTest.java | 96 ++++++++++++++++++ 2 files changed, 194 insertions(+) create mode 100644 src/main/java/org/example/filter/LocaleFilter.java create mode 100644 src/test/java/org/example/filter/LocaleFilterTest.java diff --git a/src/main/java/org/example/filter/LocaleFilter.java b/src/main/java/org/example/filter/LocaleFilter.java new file mode 100644 index 00000000..c02f634e --- /dev/null +++ b/src/main/java/org/example/filter/LocaleFilter.java @@ -0,0 +1,98 @@ +package org.example.filter; + +import org.example.http.HttpResponseBuilder; +import org.example.httpparser.HttpRequest; + +import java.util.Map; + +/** + * Filter that extracts the preferred locale from the Accept-Language header of an HTTP request. + *

+ * If the Accept-Language header is missing, blank, or malformed, the filter defaults to "en-US". + * The selected locale is stored in a ThreadLocal variable so it can be accessed during the request. + *

+ * This filter does not modify the response or stop the filter chain; it simply sets the + * current locale and forwards the request to the next filter in the chain. + *

+ * ThreadLocal cleanup is performed after the filter chain completes to prevent memory leaks. + */ +public class LocaleFilter implements Filter { + + private static final String DEFAULT_LOCALE = "en-US"; + private static final ThreadLocal currentLocale = new ThreadLocal<>(); + + @Override + public void init() { + } + + @Override + public void doFilter(HttpRequest request, + HttpResponseBuilder response, + FilterChain chain) { + try { + String locale = resolveLocale(request); + currentLocale.set(locale); + + chain.doFilter(request, response); + } finally { + currentLocale.remove(); + } + } + + @Override + public void destroy() { + } + + public static String getCurrentLocale() { + String locale = currentLocale.get(); + if (locale != null) { + return locale; + } else { + return DEFAULT_LOCALE; + } + } + + /** + * Determines the preferred locale from the Accept-Language header of the request. + * If the header is missing, blank, or malformed, this method returns the default locale "en-US". + * The first language tag is used, and any optional quality value (e.g., ";q=0.9") is stripped. + * If the request itself is null, the default locale is also returned. + */ + private String resolveLocale(HttpRequest request) { + + if (request == null) { + return DEFAULT_LOCALE; + } + + Map headers = request.getHeaders(); + if (headers == null || headers.isEmpty()) { + return DEFAULT_LOCALE; + } + + String acceptLanguage = null; + + for (Map.Entry entry : headers.entrySet()) { + if (entry.getKey() != null && + entry.getKey().equalsIgnoreCase("Accept-Language")) { + acceptLanguage = entry.getValue(); + break; + } + } + + if (acceptLanguage == null || acceptLanguage.isBlank()) { + return DEFAULT_LOCALE; + } + + String[] parts = acceptLanguage.split(","); + if (parts[0].isBlank()) { + return DEFAULT_LOCALE; + } + + String locale = parts[0].split(";")[0].trim(); + if (locale.isEmpty()) { + return DEFAULT_LOCALE; + } else { + return locale; + } + } +} diff --git a/src/test/java/org/example/filter/LocaleFilterTest.java b/src/test/java/org/example/filter/LocaleFilterTest.java new file mode 100644 index 00000000..98e626b3 --- /dev/null +++ b/src/test/java/org/example/filter/LocaleFilterTest.java @@ -0,0 +1,96 @@ +package org.example.filter; + +import org.example.http.HttpResponseBuilder; +import org.example.httpparser.HttpRequest; +import org.junit.jupiter.api.Test; + +import java.util.HashMap; +import java.util.Map; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +class LocaleFilterTest { + + @Test + void shouldUseFirstLanguageFromHeader() { + Map headers = new HashMap<>(); + headers.put("Accept-Language", "sv-SE,sv;q=0.9,en;q=0.8"); + + HttpRequest request = new HttpRequest("GET", "/", "HTTP/1.1", headers, null); + HttpResponseBuilder response = new HttpResponseBuilder(); + + LocaleFilter filter = new LocaleFilter(); + + filter.doFilter(request, response, (req, res) -> { + assertEquals("sv-SE", LocaleFilter.getCurrentLocale()); + }); + + assertEquals("en-US", LocaleFilter.getCurrentLocale()); + } + + @Test + void shouldUseDefaultWhenHeaderMissing() { + Map headers = new HashMap<>(); + + HttpRequest request = new HttpRequest("GET", "/", "HTTP/1.1", headers, null); + HttpResponseBuilder response = new HttpResponseBuilder(); + + LocaleFilter filter = new LocaleFilter(); + + filter.doFilter(request, response, (req, res) -> { + assertEquals("en-US", LocaleFilter.getCurrentLocale()); + }); + } + + @Test + void shouldUseDefaultWhenHeaderBlank() { + Map headers = new HashMap<>(); + headers.put("Accept-Language", " "); + + HttpRequest request = new HttpRequest("GET", "/", "HTTP/1.1", headers, null); + HttpResponseBuilder response = new HttpResponseBuilder(); + + LocaleFilter filter = new LocaleFilter(); + + filter.doFilter(request, response, (req, res) -> { + assertEquals("en-US", LocaleFilter.getCurrentLocale()); + }); + } + + @Test + void shouldHandleCaseInsensitiveHeader() { + Map headers = new HashMap<>(); + headers.put("accept-language", "fr-FR"); + + HttpRequest request = new HttpRequest("GET", "/", "HTTP/1.1", headers, null); + HttpResponseBuilder response = new HttpResponseBuilder(); + + LocaleFilter filter = new LocaleFilter(); + + filter.doFilter(request, response, (req, res) -> { + assertEquals("fr-FR", LocaleFilter.getCurrentLocale()); + }); + } + + @Test + void shouldUseDefaultWhenRequestIsNull() { + LocaleFilter filter = new LocaleFilter(); + HttpResponseBuilder response = new HttpResponseBuilder(); + + filter.doFilter(null, response, (req, res) -> { + assertEquals("en-US", LocaleFilter.getCurrentLocale()); + }); + } + + @Test + void shouldUseDefaultWhenHeadersAreEmpty() { + HttpRequest request = new HttpRequest("GET", "/", "HTTP/1.1", null, null); + HttpResponseBuilder response = new HttpResponseBuilder(); + + LocaleFilter filter = new LocaleFilter(); + + filter.doFilter(request, response, (req, res) -> { + assertEquals("en-US", LocaleFilter.getCurrentLocale()); + }); + } +} From d6f1d2602c82da38d3415f11005a456338291b68 Mon Sep 17 00:00:00 2001 From: Anna Ziafar <229710576+AnnaZiafar@users.noreply.github.com> Date: Wed, 25 Feb 2026 13:48:39 +0100 Subject: [PATCH 27/40] Create LoggFilter (#83) * Add LoggFilter and update HttpResponseBuilder with method getStatusCode() in order to use it in logging * Refactor code * Change magic number to constans in httpresponsebuilder * Add LoggFilter and update HttpResponseBuilder with method getStatusCode() in order to use it in logging * Refactor code * Added tests -> LoggingFilterTest * Trigger rebuild * Git is hallucinating. Trying to fix problem * Final version (hopefully) --- .../org/example/filter/LoggingFilter.java | 42 +++++++++ .../org/example/filter/LoggingFilterTest.java | 91 +++++++++++++++++++ 2 files changed, 133 insertions(+) create mode 100644 src/main/java/org/example/filter/LoggingFilter.java create mode 100644 src/test/java/org/example/filter/LoggingFilterTest.java diff --git a/src/main/java/org/example/filter/LoggingFilter.java b/src/main/java/org/example/filter/LoggingFilter.java new file mode 100644 index 00000000..a978e108 --- /dev/null +++ b/src/main/java/org/example/filter/LoggingFilter.java @@ -0,0 +1,42 @@ +package org.example.filter; + +import org.example.http.HttpResponseBuilder; +import org.example.httpparser.HttpRequest; + +import java.util.logging.Logger; + +public class LoggingFilter implements Filter { + + private static final Logger logg = Logger.getLogger(LoggingFilter.class.getName()); + + @Override + public void init() { + //No initialization needed + } + + @Override + public void doFilter(HttpRequest request, HttpResponseBuilder response, FilterChain chain) { + long startTime = System.nanoTime(); + + try { + chain.doFilter(request, response); + } catch (Exception e) { + if(response.getStatusCode() == HttpResponseBuilder.SC_OK) + response.setStatusCode(HttpResponseBuilder.SC_INTERNAL_SERVER_ERROR); + } finally { + long endTime = System.nanoTime(); + long processingTimeInMs = (endTime - startTime) / 1000000; + + String message = String.format("REQUEST: %s %s | STATUS: %s | TIME: %dms", + request.getMethod(), request.getPath(), response.getStatusCode(), processingTimeInMs); + + logg.info(message); + } + + } + + @Override + public void destroy() { + //No initialization needed + } +} diff --git a/src/test/java/org/example/filter/LoggingFilterTest.java b/src/test/java/org/example/filter/LoggingFilterTest.java new file mode 100644 index 00000000..3e9e248d --- /dev/null +++ b/src/test/java/org/example/filter/LoggingFilterTest.java @@ -0,0 +1,91 @@ +package org.example.filter; + +import org.example.http.HttpResponseBuilder; +import org.example.httpparser.HttpRequest; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.ArgumentCaptor; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; + +import java.util.logging.Handler; +import java.util.logging.LogRecord; +import java.util.logging.Logger; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.*; + +@ExtendWith(MockitoExtension.class) +class LoggingFilterTest { + + @Mock Handler handler; + @Mock HttpRequest request; + @Mock HttpResponseBuilder response; + @Mock FilterChain chain; + + LoggingFilter filter = new LoggingFilter(); + Logger logger; + + @BeforeEach + void setup(){ + logger = Logger.getLogger(LoggingFilter.class.getName()); + logger.addHandler(handler); + + when(request.getMethod()).thenReturn("GET"); + when(request.getPath()).thenReturn("/index.html"); + } + + @AfterEach + void tearDown(){ + logger.removeHandler(handler); + } + + @Test + void loggingWorksWhenChainWorks(){ + when(response.getStatusCode()).thenReturn(HttpResponseBuilder.SC_OK); + + filter.doFilter(request, response, chain); + + verifyLogContent("REQUEST: GET /index.html | STATUS: 200 | TIME: "); + } + + @Test + void loggingWorksWhenErrorOccurs(){ + when(response.getStatusCode()).thenReturn(HttpResponseBuilder.SC_NOT_FOUND); + + doThrow(new RuntimeException()).when(chain).doFilter(request, response); + + filter.doFilter(request, response, chain); + + verifyLogContent("REQUEST: GET /index.html | STATUS: 404 | TIME: "); + } + + @Test + void statusChangesFrom200To500WhenErrorOccurs(){ + //Return status 200 first time. + //When error is thrown status should switch to 500 (if it was originally 200) + when(response.getStatusCode()) + .thenReturn(HttpResponseBuilder.SC_OK) + .thenReturn(HttpResponseBuilder.SC_INTERNAL_SERVER_ERROR); + + doThrow(new RuntimeException()).when(chain).doFilter(request, response); + + filter.doFilter(request, response, chain); + verify(response).setStatusCode(HttpResponseBuilder.SC_INTERNAL_SERVER_ERROR); + + verifyLogContent("REQUEST: GET /index.html | STATUS: 500 | TIME: "); + } + + private void verifyLogContent(String expectedMessage){ + //Use ArgumentCaptor to capture the actual message in the log + ArgumentCaptor logCaptor = ArgumentCaptor.forClass(LogRecord.class); + verify(handler).publish(logCaptor.capture()); + + String message = logCaptor.getValue().getMessage(); + + assertThat(message).contains(expectedMessage); + } + +} From 27e627c7f9726a0a3440ebe24a7078a98fe23ff2 Mon Sep 17 00:00:00 2001 From: Anna Ziafar <229710576+AnnaZiafar@users.noreply.github.com> Date: Wed, 25 Feb 2026 15:13:15 +0100 Subject: [PATCH 28/40] Return status code 500 (#79) * Add error handling for when client request fail -> return internal server error 500 * Create ConnectionFactory in order to be able to test the TcpServer. Implement factory into TcpServer and App. * Create test to check whether handleClient throws internal server error when there is an exception * Modify test * Update logic -> seperate handleClient and processRequest in order to have open socket when handling internal server error * Exchange Printwriter to Outputstream in handleInternalServerError * Add error handling for when client request fail -> return internal server error 500 * Create ConnectionFactory in order to be able to test the TcpServer. Implement factory into TcpServer and App. * Create test to check whether handleClient throws internal server error when there is an exception * Modify test * Update logic -> seperate handleClient and processRequest in order to have open socket when handling internal server error * Exchange Printwriter to Outputstream in handleInternalServerError * Rebase main onto bransch. Update App -> add Connectionhandler::new Also update handleInternalServerError --- src/main/java/org/example/App.java | 3 +- .../java/org/example/ConnectionFactory.java | 7 +++ src/main/java/org/example/TcpServer.java | 49 +++++++++++++++++-- src/test/java/org/example/TcpServerTest.java | 40 +++++++++++++++ 4 files changed, 93 insertions(+), 6 deletions(-) create mode 100644 src/main/java/org/example/ConnectionFactory.java create mode 100644 src/test/java/org/example/TcpServerTest.java diff --git a/src/main/java/org/example/App.java b/src/main/java/org/example/App.java index 75c2914b..966e9563 100644 --- a/src/main/java/org/example/App.java +++ b/src/main/java/org/example/App.java @@ -3,6 +3,7 @@ import org.example.config.AppConfig; import org.example.config.ConfigLoader; +import java.net.Socket; import java.nio.file.Path; public class App { @@ -16,7 +17,7 @@ public static void main(String[] args) { int port = resolvePort(args, appConfig.server().port()); - new TcpServer(port).start(); + new TcpServer(port, ConnectionHandler::new).start(); } static int resolvePort(String[] args, int configPort) { diff --git a/src/main/java/org/example/ConnectionFactory.java b/src/main/java/org/example/ConnectionFactory.java new file mode 100644 index 00000000..5f9ac7dc --- /dev/null +++ b/src/main/java/org/example/ConnectionFactory.java @@ -0,0 +1,7 @@ +package org.example; + +import java.net.Socket; + +public interface ConnectionFactory { + ConnectionHandler create(Socket socket); +} diff --git a/src/main/java/org/example/TcpServer.java b/src/main/java/org/example/TcpServer.java index 3f96b4d8..e0a3655d 100644 --- a/src/main/java/org/example/TcpServer.java +++ b/src/main/java/org/example/TcpServer.java @@ -1,15 +1,23 @@ package org.example; +import org.example.http.HttpResponseBuilder; + import java.io.IOException; +import java.io.OutputStream; +import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; +import java.nio.charset.StandardCharsets; +import java.util.Map; public class TcpServer { private final int port; + private final ConnectionFactory connectionFactory; - public TcpServer(int port) { + public TcpServer(int port, ConnectionFactory connectionFactory) { this.port = port; + this.connectionFactory = connectionFactory; } public void start() { @@ -26,11 +34,42 @@ public void start() { } } - private void handleClient(Socket client) { - try (ConnectionHandler connectionHandler = new ConnectionHandler(client)) { - connectionHandler.runConnectionHandler(); + protected void handleClient(Socket client) { + try(client){ + processRequest(client); + } catch (Exception e) { + throw new RuntimeException("Failed to close socket", e); + } + } + + private void processRequest(Socket client) throws Exception { + ConnectionHandler handler = null; + try{ + handler = connectionFactory.create(client); + handler.runConnectionHandler(); } catch (Exception e) { - throw new RuntimeException("Error handling client connection " + e); + handleInternalServerError(client); + } finally { + if(handler != null) + handler.close(); + } + } + + + private void handleInternalServerError(Socket client){ + HttpResponseBuilder response = new HttpResponseBuilder(); + response.setStatusCode(HttpResponseBuilder.SC_INTERNAL_SERVER_ERROR); + response.setHeaders(Map.of("Content-Type", "text/plain; charset=utf-8")); + response.setBody("⚠️ Internal Server Error 500 ⚠️"); + + if (!client.isClosed()) { + try { + OutputStream out = client.getOutputStream(); + out.write(response.build()); + out.flush(); + } catch (IOException e) { + System.err.println("Failed to send 500 response: " + e.getMessage()); + } } } } diff --git a/src/test/java/org/example/TcpServerTest.java b/src/test/java/org/example/TcpServerTest.java new file mode 100644 index 00000000..a62b3e95 --- /dev/null +++ b/src/test/java/org/example/TcpServerTest.java @@ -0,0 +1,40 @@ +package org.example; + +import org.junit.jupiter.api.Test; +import org.mockito.Mockito; + +import static org.junit.jupiter.api.Assertions.assertAll; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.when; + +import java.net.Socket; + +class TcpServerTest { + + + @Test + void failedClientRequestShouldReturnError500() throws Exception{ + ConnectionFactory mockFactory = Mockito.mock(ConnectionFactory.class); + ConnectionHandler mockHandler = Mockito.mock(ConnectionHandler.class); + TcpServer server = new TcpServer(0, mockFactory); + + Socket mockSocket = Mockito.mock(Socket.class); + java.io.ByteArrayOutputStream outputStream = new java.io.ByteArrayOutputStream(); + + when(mockSocket.getOutputStream()).thenReturn(outputStream); + when(mockFactory.create(any(Socket.class))).thenReturn(mockHandler); + + Mockito.doThrow(new RuntimeException("Simulated Crash")) + .when(mockHandler).runConnectionHandler(); + + server.handleClient(mockSocket); + + String response = outputStream.toString(); + assertAll( + () -> assertTrue(response.contains("500")), + () -> assertTrue(response.contains("Internal Server Error 500")), + () -> assertTrue(response.contains("Content-Type: text/plain")) + ); + } +} From db0c574b39d9d91613913a902f3932fcb7b34280 Mon Sep 17 00:00:00 2001 From: AntonAhlqvist Date: Wed, 25 Feb 2026 17:56:57 +0100 Subject: [PATCH 29/40] Feature/LocaleFilterCookie (#92) * Re-commit LocaleFilterWithCookie + tests to clean branch for PR * Fix: make header lookups case-insensitive to avoid incorrect default locale fallback. --- .../filter/LocaleFilterWithCookie.java | 138 ++++++++++++++++++ .../filter/LocaleFilterWithCookieTest.java | 96 ++++++++++++ 2 files changed, 234 insertions(+) create mode 100644 src/main/java/org/example/filter/LocaleFilterWithCookie.java create mode 100644 src/test/java/org/example/filter/LocaleFilterWithCookieTest.java diff --git a/src/main/java/org/example/filter/LocaleFilterWithCookie.java b/src/main/java/org/example/filter/LocaleFilterWithCookie.java new file mode 100644 index 00000000..28f452ca --- /dev/null +++ b/src/main/java/org/example/filter/LocaleFilterWithCookie.java @@ -0,0 +1,138 @@ +package org.example.filter; + +import org.example.http.HttpResponseBuilder; +import org.example.httpparser.HttpRequest; + +import java.util.Map; + +/** + * Filter that determines the preferred locale for an HTTP request using cookies and headers. + *

+ * First, it checks for a locale set in a cookie named "user-lang". If the cookie is missing, + * blank, or malformed, it falls back to the Accept-Language header. If neither is present + * or valid, the filter defaults to "en-US". + *

+ * The selected locale is stored in a ThreadLocal variable so it can be accessed throughout + * the processing of the request. + *

+ * This filter does not modify the response or stop the filter chain; it only sets the + * current locale and forwards the request to the next filter. + *

+ * ThreadLocal cleanup is performed after the filter chain completes to prevent memory leaks. + */ +public class LocaleFilterWithCookie implements Filter { + + private static final String DEFAULT_LOCALE = "en-US"; + private static final String LOCALE_COOKIE_NAME = "user-lang"; + private static final ThreadLocal currentLocale = new ThreadLocal<>(); + + @Override + public void init() { + } + + @Override + public void doFilter(HttpRequest request, HttpResponseBuilder response, FilterChain chain) { + try { + String locale = resolveLocale(request); + currentLocale.set(locale); + + chain.doFilter(request, response); + } finally { + currentLocale.remove(); + } + } + + @Override + public void destroy() { + } + + public static String getCurrentLocale() { + String locale = currentLocale.get(); + if (locale != null) { + return locale; + } else { + return DEFAULT_LOCALE; + } + } + + private String resolveLocale(HttpRequest request) { + String cookieLocale = extractLocaleFromCookie(request); + if (cookieLocale != null && !cookieLocale.isBlank()) { + return cookieLocale; + } + + String headerLocale = extractLocaleFromHeader(request); + if (headerLocale != null && !headerLocale.isBlank()) { + return headerLocale; + } + + return DEFAULT_LOCALE; + } + + /** + * Extracts the locale from the "user-lang" cookie if present. + *

+ * If the cookie header is missing, blank, or malformed, returns null. + */ + private String extractLocaleFromCookie(HttpRequest request) { + Map headers = request.getHeaders(); + if (headers == null) { + return null; + } + + String cookieHeader = headers.entrySet().stream() + .filter(e -> e.getKey() != null && e.getKey().equalsIgnoreCase("Cookie")) + .map(Map.Entry::getValue) + .findFirst() + .orElse(null); + + if (cookieHeader == null || cookieHeader.isBlank()) { + return null; + } + + String[] cookies = cookieHeader.split(";"); + for (String cookie : cookies) { + String[] parts = cookie.trim().split("=", 2); + if (parts.length == 2) { + String name = parts[0].trim(); + String value = parts[1].trim(); + if (LOCALE_COOKIE_NAME.equals(name) && !value.isBlank()) { + return value; + } + } + } + + return null; + } + + /** + * Extracts the preferred locale from the Accept-Language header of the request. + *

+ * If the header is missing, blank, or malformed, returns null. + * The first language tag is used and any optional quality value (e.g., ";q=0.9") is stripped. + */ + private String extractLocaleFromHeader(HttpRequest request) { + Map headers = request.getHeaders(); + if (headers == null) { + return null; + } + + String acceptLanguage = headers.entrySet().stream() + .filter(e -> e.getKey() != null && e.getKey().equalsIgnoreCase("Accept-Language")) + .map(Map.Entry::getValue) + .findFirst() + .orElse(null); + + if (acceptLanguage == null || acceptLanguage.isBlank()) { + return null; + } + + String[] parts = acceptLanguage.split(","); + if (parts.length == 0 || parts[0].isBlank()) { + return null; + } + + String locale = parts[0].split(";")[0].trim(); + return locale.isEmpty() ? null : locale; + } +} diff --git a/src/test/java/org/example/filter/LocaleFilterWithCookieTest.java b/src/test/java/org/example/filter/LocaleFilterWithCookieTest.java new file mode 100644 index 00000000..e83603b9 --- /dev/null +++ b/src/test/java/org/example/filter/LocaleFilterWithCookieTest.java @@ -0,0 +1,96 @@ +package org.example.filter; + +import org.example.http.HttpResponseBuilder; +import org.example.httpparser.HttpRequest; +import org.junit.jupiter.api.Test; + +import java.util.Map; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +class LocaleFilterWithCookieTest { + + @Test + void testDefaultLocaleWhenNoHeaderOrCookie() { + HttpRequest request = new HttpRequest( + "GET", + "/", + "HTTP/1.1", + Map.of(), + null + ); + + LocaleFilterWithCookie filter = new LocaleFilterWithCookie(); + + filter.doFilter(request, new HttpResponseBuilder(), (req, res) -> { + assertEquals("en-US", LocaleFilterWithCookie.getCurrentLocale()); + }); + } + + @Test + void testLocaleFromHeader() { + HttpRequest request = new HttpRequest( + "GET", + "/", + "HTTP/1.1", + Map.of("Accept-Language", "fr-FR,fr;q=0.9"), + null + ); + + LocaleFilterWithCookie filter = new LocaleFilterWithCookie(); + + filter.doFilter(request, new HttpResponseBuilder(), (req, res) -> { + assertEquals("fr-FR", LocaleFilterWithCookie.getCurrentLocale()); + }); + } + + @Test + void testLocaleFromCookie() { + HttpRequest request = new HttpRequest( + "GET", + "/", + "HTTP/1.1", + Map.of("Cookie", "user-lang=es-ES; other=val"), + null + ); + + LocaleFilterWithCookie filter = new LocaleFilterWithCookie(); + + filter.doFilter(request, new HttpResponseBuilder(), (req, res) -> { + assertEquals("es-ES", LocaleFilterWithCookie.getCurrentLocale()); + }); + } + + @Test + void testBlankCookieFallsBackToHeader() { + HttpRequest request = new HttpRequest( + "GET", "/", "HTTP/1.1", + Map.of( + "Cookie", "user-lang=; other=value", + "Accept-Language", "fr-FR,fr;q=0.9" + ), + null + ); + + LocaleFilterWithCookie filter = new LocaleFilterWithCookie(); + filter.doFilter(request, new HttpResponseBuilder(), (req, res) -> { + assertEquals("fr-FR", LocaleFilterWithCookie.getCurrentLocale()); + }); + } + + @Test + void testCookieWithWhitespaceOnly() { + HttpRequest request = new HttpRequest( + "GET", "/", "HTTP/1.1", + Map.of( + "Cookie", "user-lang= " + ), + null + ); + + LocaleFilterWithCookie filter = new LocaleFilterWithCookie(); + filter.doFilter(request, new HttpResponseBuilder(), (req, res) -> { + assertEquals("en-US", LocaleFilterWithCookie.getCurrentLocale()); + }); + } +} From b7154fa8d01ccd46fb0add4f14f1fd7087208417 Mon Sep 17 00:00:00 2001 From: Johan Karlsson <93186588+gurkvatten@users.noreply.github.com> Date: Wed, 25 Feb 2026 18:54:34 +0100 Subject: [PATCH 30/40] added brotli4j (#94) --- pom.xml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/pom.xml b/pom.xml index 8a82b235..e747e6aa 100644 --- a/pom.xml +++ b/pom.xml @@ -65,6 +65,11 @@ jackson-dataformat-yaml 3.0.3 + + com.aayushatharva.brotli4j + brotli4j + 1.20.0 + From fa1599ab6823fb91c2f67e9f45b0f0b3d87ae21b Mon Sep 17 00:00:00 2001 From: Rickard Ankar Date: Thu, 26 Feb 2026 09:09:24 +0100 Subject: [PATCH 31/40] Issue/69 remove html concat (#73) * Remove .html concat to support all files * Add test for jpg handling in ConnectionHandler (TDD:RED), related to #69 * Make ConnectionHandler testable with webroot parameter * Fix: Strip leading slash from URI to prevent absolute path (coderabbit) --- .../java/org/example/ConnectionHandler.java | 32 ++++-- .../java/org/example/config/ConfigLoader.java | 2 +- src/main/resources/test.jpg | Bin 0 -> 5819 bytes .../org/example/ConnectionHandlerTest.java | 107 ++++++++++++++++++ www/test.jpg | Bin 0 -> 5819 bytes 5 files changed, 130 insertions(+), 11 deletions(-) create mode 100644 src/main/resources/test.jpg create mode 100644 src/test/java/org/example/ConnectionHandlerTest.java create mode 100644 www/test.jpg diff --git a/src/main/java/org/example/ConnectionHandler.java b/src/main/java/org/example/ConnectionHandler.java index 9fc219d4..1fcc29fb 100644 --- a/src/main/java/org/example/ConnectionHandler.java +++ b/src/main/java/org/example/ConnectionHandler.java @@ -19,12 +19,21 @@ public class ConnectionHandler implements AutoCloseable { Socket client; String uri; private final List filters; + String webRoot; public ConnectionHandler(Socket client) { this.client = client; this.filters = buildFilters(); + this.webRoot = null; } -private List buildFilters() { + + public ConnectionHandler(Socket client, String webRoot) { + this.client = client; + this.webRoot = webRoot; + this.filters = buildFilters(); + } + + private List buildFilters() { List list = new ArrayList<>(); AppConfig config = ConfigLoader.get(); AppConfig.IpFilterConfig ipFilterConfig = config.ipFilter(); @@ -33,10 +42,17 @@ private List buildFilters() { } // Add more filters here... return list; - } - + } public void runConnectionHandler() throws IOException { + StaticFileHandler sfh; + + if (webRoot != null) { + sfh = new StaticFileHandler(webRoot); + } else { + sfh = new StaticFileHandler(); + } + HttpParser parser = new HttpParser(); parser.setReader(client.getInputStream()); parser.parseRequest(); @@ -65,7 +81,6 @@ public void runConnectionHandler() throws IOException { } resolveTargetFile(parser.getUri()); - StaticFileHandler sfh = new StaticFileHandler(); sfh.sendGetRequest(client.getOutputStream(), uri); } @@ -79,14 +94,11 @@ private HttpResponseBuilder applyFilters(HttpRequest request) { } private void resolveTargetFile(String uri) { - if (uri.matches("/$")) { //matches(/) + if (uri == null || "/".equals(uri)) { this.uri = "index.html"; - } else if (uri.matches("^(?!.*\\.html$).*$")) { - this.uri = uri.concat(".html"); } else { - this.uri = uri; + this.uri = uri.startsWith("/") ? uri.substring(1) : uri; } - } @Override @@ -117,4 +129,4 @@ private IpFilter createIpFilterFromConfig(AppConfig.IpFilterConfig config) { filter.init(); return filter; } -} +} \ No newline at end of file diff --git a/src/main/java/org/example/config/ConfigLoader.java b/src/main/java/org/example/config/ConfigLoader.java index e69f784d..96274158 100644 --- a/src/main/java/org/example/config/ConfigLoader.java +++ b/src/main/java/org/example/config/ConfigLoader.java @@ -65,7 +65,7 @@ private static ObjectMapper createMapperFor(Path configPath) { } } - static void resetForTests() { + public static void resetForTests() { cached = null; } } diff --git a/src/main/resources/test.jpg b/src/main/resources/test.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8bf506459723345f8af76c7a828047d568b67ba9 GIT binary patch literal 5819 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 literal 0 HcmV?d00001 diff --git a/src/test/java/org/example/ConnectionHandlerTest.java b/src/test/java/org/example/ConnectionHandlerTest.java new file mode 100644 index 00000000..ee366fa2 --- /dev/null +++ b/src/test/java/org/example/ConnectionHandlerTest.java @@ -0,0 +1,107 @@ +package org.example; + +import org.example.config.ConfigLoader; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.net.InetAddress; +import java.net.Socket; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.when; + +@ExtendWith(MockitoExtension.class) +class ConnectionHandlerTest { + + @Mock + private Socket socket; + + @TempDir + Path tempDir; + + @BeforeAll + static void setupConfig() { + ConfigLoader.resetForTests(); + ConfigLoader.loadOnce(Path.of("nonexistent-test-config.yml")); + } + + @Test + void test_jpg_file_should_return_200_not_404() throws Exception { + // Arrange + byte[] imageContent = "fake-image-data".getBytes(StandardCharsets.UTF_8); + Files.write(tempDir.resolve("test.jpg"), imageContent); + + String request = "GET /test.jpg HTTP/1.1\r\nHost: localhost\r\n\r\n"; + ByteArrayInputStream inputStream = new ByteArrayInputStream(request.getBytes(StandardCharsets.UTF_8)); + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + + when(socket.getInputStream()).thenReturn(inputStream); + when(socket.getOutputStream()).thenReturn(outputStream); + when(socket.getInetAddress()).thenReturn(InetAddress.getByName("127.0.0.1")); + + // Act + try (ConnectionHandler handler = new ConnectionHandler(socket, tempDir.toString())) { + handler.runConnectionHandler(); + } + + // Assert + String response = outputStream.toString(); + assertThat(response).contains("HTTP/1.1 200 OK"); + assertThat(response).doesNotContain("404"); + } + + @Test + void test_root_path_should_serve_index_html() throws Exception { + // Arrange + byte[] indexContent = "Hello".getBytes(StandardCharsets.UTF_8); + Files.write(tempDir.resolve("index.html"), indexContent); + + String request = "GET / HTTP/1.1\r\nHost: localhost\r\n\r\n"; + ByteArrayInputStream inputStream = new ByteArrayInputStream(request.getBytes(StandardCharsets.UTF_8)); + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + + when(socket.getInputStream()).thenReturn(inputStream); + when(socket.getOutputStream()).thenReturn(outputStream); + when(socket.getInetAddress()).thenReturn(InetAddress.getByName("127.0.0.1")); + + // Act + try (ConnectionHandler handler = new ConnectionHandler(socket, tempDir.toString())) { + handler.runConnectionHandler(); + } + + // Assert + String response = outputStream.toString(); + assertThat(response).contains("HTTP/1.1 200 OK"); + assertThat(response).doesNotContain("404"); + } + + @Test + void test_missing_file_should_return_404() throws Exception { + // Arrange — no file written to tempDir + String request = "GET /doesnotexist.html HTTP/1.1\r\nHost: localhost\r\n\r\n"; + ByteArrayInputStream inputStream = new ByteArrayInputStream(request.getBytes(StandardCharsets.UTF_8)); + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + + when(socket.getInputStream()).thenReturn(inputStream); + when(socket.getOutputStream()).thenReturn(outputStream); + when(socket.getInetAddress()).thenReturn(InetAddress.getByName("127.0.0.1")); + + // Act + try (ConnectionHandler handler = new ConnectionHandler(socket, tempDir.toString())) { + handler.runConnectionHandler(); + } + + // Assert + String response = outputStream.toString(); + assertThat(response).contains("404"); + } +} \ No newline at end of file diff --git a/www/test.jpg b/www/test.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8bf506459723345f8af76c7a828047d568b67ba9 GIT binary patch literal 5819 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 literal 0 HcmV?d00001 From c7c63e88908f35df41f0403e3c3c85227f050df8 Mon Sep 17 00:00:00 2001 From: Ericthilen Date: Thu, 26 Feb 2026 13:40:09 +0100 Subject: [PATCH 32/40] =?UTF-8?q?Implement=20configurable=20filter=20pipel?= =?UTF-8?q?ine=20(global=20+=20per=E2=80=91route=20filters)=20#34=20(#56)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * ensure global detection for empty route patterns * larify global vs route-specific registrations * add support for exact and /prefix/* matching * add coverage for global, route-specific, ordering and short-circuit * configurable global and route-specific filters with ordering * changed package * removed from branch * Add missing tests for configurable filter pipeline * Refactor filter pipeline: sort FilterRegistration directly by order * Fix RoutePattern wildcard to match base path (/api/* matches /api) * Restore App entry point and basic tests from main * Bump org.apache.maven.plugins:maven-dependency-plugin (#6) (#55) * Bump org.apache.maven.plugins:maven-dependency-plugin (#6) Bumps the maven-deps group with 1 update: [org.apache.maven.plugins:maven-dependency-plugin](https://github.com/apache/maven-dependency-plugin). Updates `org.apache.maven.plugins:maven-dependency-plugin` from 3.9.0 to 3.10.0 - [Release notes](https://github.com/apache/maven-dependency-plugin/releases) - [Commits](https://github.com/apache/maven-dependency-plugin/compare/maven-dependency-plugin-3.9.0...maven-dependency-plugin-3.10.0) --- updated-dependencies: - dependency-name: org.apache.maven.plugins:maven-dependency-plugin dependency-version: 3.10.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: maven-deps ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump org.junit.jupiter:junit-jupiter in the maven-deps group (#13) Bumps the maven-deps group with 1 update: [org.junit.jupiter:junit-jupiter](https://github.com/junit-team/junit-framework). Updates `org.junit.jupiter:junit-jupiter` from 6.0.2 to 6.0.3 - [Release notes](https://github.com/junit-team/junit-framework/releases) - [Commits](https://github.com/junit-team/junit-framework/compare/r6.0.2...r6.0.3) --- updated-dependencies: - dependency-name: org.junit.jupiter:junit-jupiter dependency-version: 6.0.3 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: maven-deps ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Add short-circuit tests for configurable filter pipeline * Add tests for response-phase and global-vs-route ordering * pom fix - no changes * Align server filter pipeline with main FilterChainImpl and HttpResponseBuilder * Align filter pipeline with main filter chain and harden immutability --------- Signed-off-by: dependabot[bot] Co-authored-by: Viktor Lindell Co-authored-by: viktorlindell12 Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .../org/example/filter/FilterChainImpl.java | 21 +- .../server/ConfigurableFilterPipeline.java | 73 ++++ .../example/server/FilterRegistration.java | 21 ++ .../java/org/example/server/RoutePattern.java | 17 + .../ConfigurableFilterPipelineTest.java | 331 ++++++++++++++++++ 5 files changed, 454 insertions(+), 9 deletions(-) create mode 100644 src/main/java/org/example/server/ConfigurableFilterPipeline.java create mode 100644 src/main/java/org/example/server/FilterRegistration.java create mode 100644 src/main/java/org/example/server/RoutePattern.java create mode 100644 src/test/java/org/example/server/ConfigurableFilterPipelineTest.java diff --git a/src/main/java/org/example/filter/FilterChainImpl.java b/src/main/java/org/example/filter/FilterChainImpl.java index b6c4509f..39f01422 100644 --- a/src/main/java/org/example/filter/FilterChainImpl.java +++ b/src/main/java/org/example/filter/FilterChainImpl.java @@ -1,24 +1,27 @@ package org.example.filter; -import org.example.http.HttpResponseBuilder; import org.example.httpparser.HttpRequest; - +import org.example.http.HttpResponseBuilder; import java.util.List; - -/* -* The default class of FilterChain, -* Contains a list of filters. For each of the filter, will execute the doFilter method. -* - */ +import java.util.function.BiConsumer; public class FilterChainImpl implements FilterChain { private final List filters; + private final BiConsumer terminalHandler; private int index = 0; public FilterChainImpl(List filters) { + this(filters, (req, resp) -> { + // default no-op (preserves previous behavior) + }); + } + + public FilterChainImpl(List filters, + BiConsumer terminalHandler) { this.filters = filters; + this.terminalHandler = terminalHandler; } @Override @@ -27,7 +30,7 @@ public void doFilter(HttpRequest request, HttpResponseBuilder response) { Filter next = filters.get(index++); next.doFilter(request, response, this); } else { - // TODO: when no more filters, should execute the request + terminalHandler.accept(request, response); } } } diff --git a/src/main/java/org/example/server/ConfigurableFilterPipeline.java b/src/main/java/org/example/server/ConfigurableFilterPipeline.java new file mode 100644 index 00000000..1e4b939f --- /dev/null +++ b/src/main/java/org/example/server/ConfigurableFilterPipeline.java @@ -0,0 +1,73 @@ +package org.example.server; + +import org.example.filter.Filter; +import org.example.filter.FilterChainImpl; +import org.example.httpparser.HttpRequest; +import org.example.http.HttpResponseBuilder; + +import java.util.ArrayList; +import java.util.Comparator; +import java.util.List; +import java.util.Objects; +import java.util.function.BiConsumer; + +public class ConfigurableFilterPipeline { + + private final List registrations; + + public ConfigurableFilterPipeline(List registrations) { + this.registrations = List.copyOf( + Objects.requireNonNull(registrations, "registrations must not be null") + ); + } + + public HttpResponseBuilder execute(HttpRequest request, + BiConsumer terminalHandler) { + + Objects.requireNonNull(request, "request must not be null"); + Objects.requireNonNull(terminalHandler, "terminalHandler must not be null"); + + List globalRegs = new ArrayList<>(); + List routeRegs = new ArrayList<>(); + + for (FilterRegistration reg : registrations) { + if (reg.isGlobal()) { + globalRegs.add(reg); + } else { + if (matchesAny(reg.routePatterns(), request.getPath())) { + routeRegs.add(reg); + } + } + } + + Comparator byOrder = + Comparator.comparingInt(FilterRegistration::order); + + globalRegs.sort(byOrder); + routeRegs.sort(byOrder); + + List allFilters = new ArrayList<>(globalRegs.size() + routeRegs.size()); + for (FilterRegistration reg : globalRegs) { + allFilters.add(reg.filter()); + } + for (FilterRegistration reg : routeRegs) { + allFilters.add(reg.filter()); + } + + HttpResponseBuilder response = new HttpResponseBuilder(); + new FilterChainImpl(allFilters, terminalHandler).doFilter(request, response); + return response; + } + + private boolean matchesAny(List patterns, String path) { + if (patterns == null || path == null) return false; + + for (String pattern : patterns) { + if (RoutePattern.matches(pattern, path)) { + return true; + } + } + + return false; + } +} \ No newline at end of file diff --git a/src/main/java/org/example/server/FilterRegistration.java b/src/main/java/org/example/server/FilterRegistration.java new file mode 100644 index 00000000..a9578161 --- /dev/null +++ b/src/main/java/org/example/server/FilterRegistration.java @@ -0,0 +1,21 @@ +package org.example.server; + +import org.example.filter.Filter; + +import java.util.List; +import java.util.Objects; + +public record FilterRegistration( + Filter filter, + int order, + List routePatterns +) { + public FilterRegistration { + filter = Objects.requireNonNull(filter, "filter must not be null"); + routePatterns = routePatterns == null ? null : List.copyOf(routePatterns); + } + + public boolean isGlobal() { + return routePatterns == null || routePatterns.isEmpty(); + } +} diff --git a/src/main/java/org/example/server/RoutePattern.java b/src/main/java/org/example/server/RoutePattern.java new file mode 100644 index 00000000..ffae5059 --- /dev/null +++ b/src/main/java/org/example/server/RoutePattern.java @@ -0,0 +1,17 @@ +package org.example.server; + +public final class RoutePattern { + + private RoutePattern() {} + + public static boolean matches(String pattern, String path) { + if (pattern == null || path == null) return false; + + if (pattern.endsWith("/*")) { + String base = pattern.substring(0, pattern.length() - 2); // drop "/*" + return path.equals(base) || path.startsWith(base + "/"); + } + + return pattern.equals(path); + } +} \ No newline at end of file diff --git a/src/test/java/org/example/server/ConfigurableFilterPipelineTest.java b/src/test/java/org/example/server/ConfigurableFilterPipelineTest.java new file mode 100644 index 00000000..c9d179d3 --- /dev/null +++ b/src/test/java/org/example/server/ConfigurableFilterPipelineTest.java @@ -0,0 +1,331 @@ +package org.example.server; + +import org.example.filter.Filter; +import org.example.filter.FilterChain; +import org.example.httpparser.HttpRequest; +import org.example.http.HttpResponseBuilder; +import org.junit.jupiter.api.Test; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +class ConfigurableFilterPipelineTest { + + @Test + void global_filter_runs() { + + List events = new ArrayList<>(); + + Filter filter = new TestFilter("g1", events, false); + + List regs = List.of( + new FilterRegistration(filter, 1, null) + ); + + ConfigurableFilterPipeline pipeline = + new ConfigurableFilterPipeline(regs); + + pipeline.execute( + newRequest("/home"), + (req, resp) -> events.add("handler") + ); + + assertEquals( + List.of("g1", "handler"), + events + ); + } + + @Test + void filter_can_stop_chain() { + + List events = new ArrayList<>(); + + Filter stopFilter = new TestFilter("stop", events, true); + + List regs = List.of( + new FilterRegistration(stopFilter, 1, null) + ); + + ConfigurableFilterPipeline pipeline = + new ConfigurableFilterPipeline(regs); + + HttpResponseBuilder response = pipeline.execute( + newRequest("/home"), + (req, resp) -> events.add("handler") + ); + + assertEquals(HttpResponseBuilder.SC_FORBIDDEN, response.getStatusCode()); + assertEquals(List.of("stop"), events); + } + + @Test + void route_specific_filter_runs_when_path_matches() { + List events = new ArrayList<>(); + + Filter routeFilter = new TestFilter("r1", events, false); + + List regs = List.of( + new FilterRegistration(routeFilter, 1, List.of("/api/*")) + ); + + ConfigurableFilterPipeline pipeline = + new ConfigurableFilterPipeline(regs); + + pipeline.execute( + newRequest("/api/users"), + (req, resp) -> events.add("handler") + ); + + assertEquals(List.of("r1", "handler"), events); + } + + @Test + void route_specific_filter_is_skipped_when_path_does_not_match() { + List events = new ArrayList<>(); + + Filter routeFilter = new TestFilter("r1", events, false); + + List regs = List.of( + new FilterRegistration(routeFilter, 1, List.of("/api/*")) + ); + + ConfigurableFilterPipeline pipeline = + new ConfigurableFilterPipeline(regs); + + pipeline.execute( + newRequest("/public"), + (req, resp) -> events.add("handler") + ); + + assertEquals(List.of("handler"), events); + } + + @Test + void mixed_pipeline_runs_global_then_route_then_handler() { + List events = new ArrayList<>(); + + Filter global = new TestFilter("g1", events, false); + Filter route = new TestFilter("r1", events, false); + + List regs = List.of( + new FilterRegistration(global, 1, null), + new FilterRegistration(route, 1, List.of("/api/*")) + ); + + ConfigurableFilterPipeline pipeline = + new ConfigurableFilterPipeline(regs); + + pipeline.execute( + newRequest("/api/users"), + (req, resp) -> events.add("handler") + ); + + assertEquals(List.of("g1", "r1", "handler"), events); + } + + @Test + void ordering_is_by_order_field() { + List events = new ArrayList<>(); + + Filter f20 = new TestFilter("f20", events, false); + Filter f10 = new TestFilter("f10", events, false); + Filter f30 = new TestFilter("f30", events, false); + + List regs = List.of( + new FilterRegistration(f20, 20, null), + new FilterRegistration(f10, 10, null), + new FilterRegistration(f30, 30, null) + ); + + ConfigurableFilterPipeline pipeline = + new ConfigurableFilterPipeline(regs); + + pipeline.execute( + newRequest("/home"), + (req, resp) -> events.add("handler") + ); + + assertEquals(List.of("f10", "f20", "f30", "handler"), events); + } + + @Test + void global_stop_filter_prevents_route_and_handler() { + List events = new ArrayList<>(); + + Filter globalStop = new TestFilter("gStop", events, true); + Filter routeFilter = new TestFilter("r1", events, false); + + List regs = List.of( + new FilterRegistration(globalStop, 1, null), + new FilterRegistration(routeFilter, 1, List.of("/api/*")) + ); + + ConfigurableFilterPipeline pipeline = + new ConfigurableFilterPipeline(regs); + + HttpResponseBuilder response = pipeline.execute( + newRequest("/api/users"), + (req, resp) -> events.add("handler") + ); + + assertEquals(HttpResponseBuilder.SC_FORBIDDEN, response.getStatusCode()); + assertEquals(List.of("gStop"), events); + } + + @Test + void route_stop_filter_prevents_handler_but_global_runs() { + List events = new ArrayList<>(); + + Filter global = new TestFilter("g1", events, false); + Filter routeStop = new TestFilter("rStop", events, true); + + List regs = List.of( + new FilterRegistration(global, 1, null), + new FilterRegistration(routeStop, 1, List.of("/api/*")) + ); + + ConfigurableFilterPipeline pipeline = + new ConfigurableFilterPipeline(regs); + + HttpResponseBuilder response = pipeline.execute( + newRequest("/api/users"), + (req, resp) -> events.add("handler") + ); + + assertEquals(HttpResponseBuilder.SC_FORBIDDEN, response.getStatusCode()); + assertEquals(List.of("g1", "rStop"), events); + } + + @Test + void response_phase_can_be_done_with_try_finally_in_filters_reverse_order() { + List events = new ArrayList<>(); + + Filter f1 = new Filter() { + @Override + public void init() { + // no-op + } + + @Override + public void doFilter(HttpRequest request, HttpResponseBuilder response, FilterChain chain) { + events.add("f1:enter"); + try { + chain.doFilter(request, response); + } finally { + events.add("f1:exit"); + } + } + + @Override + public void destroy() { + // no-op + } + }; + + Filter f2 = new Filter() { + @Override + public void init() { + // no-op + } + + @Override + public void doFilter(HttpRequest request, HttpResponseBuilder response, FilterChain chain) { + events.add("f2:enter"); + try { + chain.doFilter(request, response); + } finally { + events.add("f2:exit"); + } + } + + @Override + public void destroy() { + // no-op + } + }; + + List regs = List.of( + new FilterRegistration(f1, 10, null), + new FilterRegistration(f2, 20, null) + ); + + ConfigurableFilterPipeline pipeline = + new ConfigurableFilterPipeline(regs); + + pipeline.execute( + newRequest("/home"), + (req, resp) -> events.add("handler") + ); + + assertEquals( + List.of("f1:enter", "f2:enter", "handler", "f2:exit", "f1:exit"), + events + ); + } + + @Test + void global_filters_run_before_route_filters_even_if_route_has_lower_order() { + List events = new ArrayList<>(); + + Filter global100 = new TestFilter("g100", events, false); + Filter route0 = new TestFilter("r0", events, false); + + List regs = List.of( + new FilterRegistration(global100, 100, null), + new FilterRegistration(route0, 0, List.of("/api/*")) + ); + + ConfigurableFilterPipeline pipeline = + new ConfigurableFilterPipeline(regs); + + pipeline.execute( + newRequest("/api/users"), + (req, resp) -> events.add("handler") + ); + + assertEquals(List.of("g100", "r0", "handler"), events); + } + + private static HttpRequest newRequest(String path) { + return new HttpRequest("GET", path, "HTTP/1.1", Map.of(), ""); + } + + static class TestFilter implements Filter { + + private final String name; + private final List events; + private final boolean stop; + + TestFilter(String name, List events, boolean stop) { + this.name = name; + this.events = events; + this.stop = stop; + } + + @Override + public void init() { + // no-op + } + @Override + public void doFilter(HttpRequest request, HttpResponseBuilder response, FilterChain chain) { + + events.add(name); + + if (stop) { + response.setStatusCode(HttpResponseBuilder.SC_FORBIDDEN); + return; + } + + chain.doFilter(request, response); + } + + @Override + public void destroy() { + // no-op + } + } +} From 245e18839f228b3e1c8da341f4ab40fa6f85f3a8 Mon Sep 17 00:00:00 2001 From: Johan Karlsson <93186588+gurkvatten@users.noreply.github.com> Date: Thu, 26 Feb 2026 13:53:59 +0100 Subject: [PATCH 33/40] 28 file format compression filter (#82) * Add CompressionFilter skeleton with basic structure * Add Accept-Encoding header detection for gzip * Add Accept-Encoding header detection for gzip * Implement gzip compression for response bodies * Add Content-Encoding * Added test file * Add content-type filtering to skip non-compressible formats * Add Javadoc * coderabbit fixes * added getter for HttpResponseBuilder and rewrote code that used reflection * fixed IOException --- .../org/example/filter/CompressionFilter.java | 146 +++++++++++++ .../org/example/http/HttpResponseBuilder.java | 8 + .../example/filter/CompressionFilterTest.java | 197 ++++++++++++++++++ 3 files changed, 351 insertions(+) create mode 100644 src/main/java/org/example/filter/CompressionFilter.java create mode 100644 src/test/java/org/example/filter/CompressionFilterTest.java diff --git a/src/main/java/org/example/filter/CompressionFilter.java b/src/main/java/org/example/filter/CompressionFilter.java new file mode 100644 index 00000000..120c0769 --- /dev/null +++ b/src/main/java/org/example/filter/CompressionFilter.java @@ -0,0 +1,146 @@ +package org.example.filter; + +import org.example.http.HttpResponseBuilder; +import org.example.httpparser.HttpRequest; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.util.Map; +import java.util.Set; +import java.util.zip.GZIPOutputStream; + +/** + * Compression filter that compresses HTTP responses with gzip when supported by client. + * + *

This filter applies gzip compression to HTTP responses when the following conditions are met: + *

    + *
  • Client sends Accept-Encoding header containing "gzip"
  • + *
  • Response body is larger than 1KB (MIN_COMPRESS_SIZE)
  • + *
  • Content-Type is compressible (text-based formats like HTML, CSS, JS, JSON)
  • + *
  • Content-Type is not already compressed (images, videos, zip files)
  • + *
+ * + *

When compression is applied, the filter: + *

    + *
  • Compresses the response body using gzip
  • + *
  • Sets Content-Encoding: gzip header
  • + *
  • Sets Vary: Accept-Encoding header for proper caching
  • + *
+ * + */ + +public class CompressionFilter implements Filter { + private static final int MIN_COMPRESS_SIZE = 1024; + + private static final Set COMPRESSIBLE_TYPES = Set.of( + "text/html", + "text/css", + "text/javascript", + "application/javascript", + "application/json", + "application/xml", + "text/plain" + ); + + private static final Set SKIP_TYPES = Set.of( + "image/jpeg", "image/jpg", "image/png", "image/gif", + "image/webp", "video/mp4", "application/zip", + "application/gzip", "application/x-gzip" + ); + + + @Override + public void init() { + } + + @Override + public void doFilter(HttpRequest request, HttpResponseBuilder response, + FilterChain chain) { + chain.doFilter(request, response); + + compressIfNeeded(request, response); + } + + private void compressIfNeeded(HttpRequest request, HttpResponseBuilder response) { + if (response.getHeader("Content-Encoding") != null) { + return; + } + + String acceptEncoding = getHeader(request, "Accept-Encoding"); + if (acceptEncoding == null || !acceptEncoding.toLowerCase().contains("gzip")) { + return; + } + + byte[] originalBody = response.getBodyBytes(); + if (originalBody == null || originalBody.length < MIN_COMPRESS_SIZE) { + return; + } + + String contentType = response.getHeader("Content-Type"); + if (!shouldCompress(contentType)) { + return; + } + + try { + byte[] compressed = gzipCompress(originalBody); + + response.setBody(compressed); + response.setHeader("Content-Encoding", "gzip"); + + String existingVary = response.getHeader("Vary"); + if (existingVary != null && !existingVary.isEmpty()) { + if (!existingVary.toLowerCase().contains("accept-encoding")) { + response.setHeader("Vary", existingVary + ", Accept-Encoding"); + } + } else { + response.setHeader("Vary", "Accept-Encoding"); + } + + } catch (IOException e) { + System.err.println("CompressionFilter: gzip compression failed: " + e.getMessage()); + } + } + + private boolean shouldCompress(String contentType) { + if (contentType == null) { + return false; + } + + String baseType = contentType.split(";")[0].trim().toLowerCase(); + + if (SKIP_TYPES.contains(baseType)) { + return false; + } + + return COMPRESSIBLE_TYPES.contains(baseType) || + baseType.startsWith("text/"); + } + + private String getHeader(HttpRequest request, String headerName) { + Map headers = request.getHeaders(); + + String value = headers.get(headerName); + if (value != null) return value; + + for (Map.Entry entry : headers.entrySet()) { + if (entry.getKey().equalsIgnoreCase(headerName)) { + return entry.getValue(); + } + } + return null; + } + + private byte[] gzipCompress(byte[] data) throws IOException { + ByteArrayOutputStream byteStream = new ByteArrayOutputStream(data.length); + + try (GZIPOutputStream gzipStream = new GZIPOutputStream(byteStream)) { + gzipStream.write(data); + } + + return byteStream.toByteArray(); + } + + @Override + public void destroy() { + } +} \ No newline at end of file diff --git a/src/main/java/org/example/http/HttpResponseBuilder.java b/src/main/java/org/example/http/HttpResponseBuilder.java index 9b6ed2a7..db6e1880 100644 --- a/src/main/java/org/example/http/HttpResponseBuilder.java +++ b/src/main/java/org/example/http/HttpResponseBuilder.java @@ -87,6 +87,14 @@ public void setHeaders(Map headers) { public void setHeader(String name, String value) { this.headers.put(name, value); } + public String getHeader(String name) { + return headers.get(name); + } + + public byte[] getBodyBytes() { + if (bytebody != null) return bytebody; + return body.getBytes(StandardCharsets.UTF_8); + } public void setContentTypeFromFilename(String filename) { String mimeType = MimeTypeDetector.detectMimeType(filename); diff --git a/src/test/java/org/example/filter/CompressionFilterTest.java b/src/test/java/org/example/filter/CompressionFilterTest.java new file mode 100644 index 00000000..b9994635 --- /dev/null +++ b/src/test/java/org/example/filter/CompressionFilterTest.java @@ -0,0 +1,197 @@ +package org.example.filter; + +import org.example.http.HttpResponseBuilder; +import org.example.httpparser.HttpRequest; +import org.junit.jupiter.api.Test; + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.nio.charset.StandardCharsets; +import java.util.HashMap; +import java.util.Map; +import java.util.zip.GZIPInputStream; + +import static org.junit.jupiter.api.Assertions.*; + +class CompressionFilterTest { + + @Test + void testGzipCompressionWhenClientSupportsIt() throws Exception { + Map headers = new HashMap<>(); + headers.put("Accept-Encoding", "gzip, deflate"); + + HttpRequest request = new HttpRequest( + "GET", + "/", + "HTTP/1.1", + headers, + null + ); + + String largeBody = "" + "Hello World! ".repeat(200) + ""; + HttpResponseBuilder response = new HttpResponseBuilder(); + response.setBody(largeBody); + response.setHeaders(Map.of("Content-Type", "text/html")); + + FilterChain mockChain = (req, res) -> { + }; + + CompressionFilter filter = new CompressionFilter(); + filter.init(); + filter.doFilter(request, response, mockChain); + + byte[] compressedBody = getBodyFromResponse(response); + assertNotNull(compressedBody, "Body should not be null"); + assertTrue(compressedBody.length < largeBody.getBytes(StandardCharsets.UTF_8).length, + "Compressed body should be smaller than original"); + + + String decompressed = decompressGzip(compressedBody); + assertEquals(largeBody, decompressed, "Decompressed data should match original"); + } + + @Test + void testNoCompressionWhenClientDoesNotSupport() { + HttpRequest request = new HttpRequest( + "GET", + "/", + "HTTP/1.1", + Map.of(), + null + ); + + String body = "" + "Hello World! ".repeat(200) + ""; + HttpResponseBuilder response = new HttpResponseBuilder(); + response.setBody(body); + + FilterChain mockChain = (req, res) -> {}; + + CompressionFilter filter = new CompressionFilter(); + filter.doFilter(request, response, mockChain); + + byte[] resultBody = getBodyFromResponse(response); + assertArrayEquals(body.getBytes(StandardCharsets.UTF_8), resultBody, + "Body should not be compressed when client doesn't support gzip"); + } + + @Test + void testNoCompressionForSmallResponses() { + Map headers = new HashMap<>(); + headers.put("Accept-Encoding", "gzip"); + + HttpRequest request = new HttpRequest("GET", "/", "HTTP/1.1", headers, null); + + String smallBody = "Hello"; + HttpResponseBuilder response = new HttpResponseBuilder(); + response.setBody(smallBody); + + FilterChain mockChain = (req, res) -> {}; + + CompressionFilter filter = new CompressionFilter(); + filter.doFilter(request, response, mockChain); + + byte[] resultBody = getBodyFromResponse(response); + assertArrayEquals(smallBody.getBytes(StandardCharsets.UTF_8), resultBody, + "Small bodies should not be compressed"); + } + + private String decompressGzip(byte[] compressed) throws Exception { + ByteArrayInputStream bais = new ByteArrayInputStream(compressed); + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + + try (GZIPInputStream gzis = new GZIPInputStream(bais)) { + byte[] buffer = new byte[1024]; + int len; + while ((len = gzis.read(buffer)) > 0) { + baos.write(buffer, 0, len); + } + } + + return baos.toString(StandardCharsets.UTF_8); + } + + private byte[] getBodyFromResponse(HttpResponseBuilder response) { + try { + var field = response.getClass().getDeclaredField("bytebody"); + field.setAccessible(true); + byte[] bytebody = (byte[]) field.get(response); + + if (bytebody != null) { + return bytebody; + } + + var bodyField = response.getClass().getDeclaredField("body"); + bodyField.setAccessible(true); + String body = (String) bodyField.get(response); + return body.getBytes(StandardCharsets.UTF_8); + + } catch (Exception e) { + throw new RuntimeException("Failed to get body", e); + } + } + @Test + void testSkipCompressionForImages() { + Map headers = new HashMap<>(); + headers.put("Accept-Encoding", "gzip"); + + HttpRequest request = new HttpRequest("GET", "/image.jpg", "HTTP/1.1", headers, null); + + String largeImageData = "fake image data ".repeat(200); + HttpResponseBuilder response = new HttpResponseBuilder(); + response.setBody(largeImageData); + response.setHeaders(Map.of("Content-Type", "image/jpeg")); + + FilterChain mockChain = (req, res) -> {}; + + CompressionFilter filter = new CompressionFilter(); + filter.doFilter(request, response, mockChain); + + byte[] resultBody = getBodyFromResponse(response); + assertArrayEquals(largeImageData.getBytes(StandardCharsets.UTF_8), resultBody, + "Images should not be compressed"); + } + + @Test + void testCompressJsonResponse() { + Map headers = new HashMap<>(); + headers.put("Accept-Encoding", "gzip"); + + HttpRequest request = new HttpRequest("GET", "/api/data", "HTTP/1.1", headers, null); + + String jsonData = "{\"data\": " + "\"value\",".repeat(200) + "}"; + HttpResponseBuilder response = new HttpResponseBuilder(); + response.setBody(jsonData); + response.setHeaders(Map.of("Content-Type", "application/json")); + + FilterChain mockChain = (req, res) -> {}; + + CompressionFilter filter = new CompressionFilter(); + filter.doFilter(request, response, mockChain); + + byte[] resultBody = getBodyFromResponse(response); + assertTrue(resultBody.length < jsonData.getBytes(StandardCharsets.UTF_8).length, + "JSON should be compressed"); + } + + @Test + void testHandleContentTypeWithCharset() { + Map headers = new HashMap<>(); + headers.put("Accept-Encoding", "gzip"); + + HttpRequest request = new HttpRequest("GET", "/", "HTTP/1.1", headers, null); + + String body = "" + "content ".repeat(200) + ""; + HttpResponseBuilder response = new HttpResponseBuilder(); + response.setBody(body); + response.setHeaders(Map.of("Content-Type", "text/html; charset=UTF-8")); + + FilterChain mockChain = (req, res) -> {}; + + CompressionFilter filter = new CompressionFilter(); + filter.doFilter(request, response, mockChain); + + byte[] resultBody = getBodyFromResponse(response); + assertTrue(resultBody.length < body.getBytes(StandardCharsets.UTF_8).length, + "Should compress even when Content-Type has charset"); + } +} \ No newline at end of file From bc9331366939df097bd297a251a8264b979c933e Mon Sep 17 00:00:00 2001 From: Ebba Andersson Date: Thu, 26 Feb 2026 17:05:53 +0100 Subject: [PATCH 34/40] Feature/32 filter request timeout class (#90) * Create RequestTimeOutFilter and RequestTimeOutFilterTest Co-authored-by: Ebba Andersson * Revert "Create RequestTimeOutFilter and RequestTimeOutFilterTest" This reverts commit efc883d8baa8f4289d3a75e7cd3566fb52b45ca0. * Create RequestTimeOutFilter and RequestTimeOutFilterTest Co-authored-by: Ebba Andersson * Add test for exception in RequestTimeOutFilterTest Co-authored-by: Ebba Andersson * Add a test for exception in RequestTimeOutFilterTest Changes by ebbaandersson * Add javadocs for RequestTimeOutFilter Co-authored-by: Ebba Andersson * Changes made after CodeRabbit Review Co-authored-by: Ebba Andersson * Change ExecutorService, add rejectedExecutionException, add method handleInternalError Co-authored-by: Ebba Andersson * Changes tests to assert the new code in RequestTimeOutFilter * Create RequestTimeOutFilter and RequestTimeOutFilterTest Co-authored-by: Ebba Andersson * Add test for exception in RequestTimeOutFilterTest Co-authored-by: Ebba Andersson * Add a test for exception in RequestTimeOutFilterTest Changes by ebbaandersson * Add javadocs for RequestTimeOutFilter Co-authored-by: Ebba Andersson * Changes made after CodeRabbit Review Co-authored-by: Ebba Andersson * Change ExecutorService, add rejectedExecutionException, add method handleInternalError Co-authored-by: Ebba Andersson * Changes tests to assert the new code in RequestTimeOutFilter * add a future.cancel to stop the worker task. add defensive copying and unmodifiable views of setter and getter in HttpResponseBuilder Co-authored-by: Ebba Andersson * Removes "static" from ExecutorService. Adds a test which checks that the timeout-time is bigger than zero Co-authored-by: Ebba Andersson * Adds chain-execution verification to happy-path-test. * Implementing a transfer from existing respons to shadowResponse in the beginning to make sure we don't lose information Co-authored-by: Ebba Andersson --------- Co-authored-by: Fredrik Mohlen --- .../example/filter/RequestTimeOutFilter.java | 122 ++++++++++++++++++ .../org/example/http/HttpResponseBuilder.java | 19 ++- .../filter/RequestTimeOutFilterTest.java | 91 +++++++++++++ 3 files changed, 231 insertions(+), 1 deletion(-) create mode 100644 src/main/java/org/example/filter/RequestTimeOutFilter.java create mode 100644 src/test/java/org/example/filter/RequestTimeOutFilterTest.java diff --git a/src/main/java/org/example/filter/RequestTimeOutFilter.java b/src/main/java/org/example/filter/RequestTimeOutFilter.java new file mode 100644 index 00000000..1bfc7274 --- /dev/null +++ b/src/main/java/org/example/filter/RequestTimeOutFilter.java @@ -0,0 +1,122 @@ +package org.example.filter; + +import org.example.http.HttpResponseBuilder; +import org.example.httpparser.HttpRequest; +import static org.example.http.HttpResponseBuilder.*; + +import java.util.Map; +import java.util.concurrent.*; +import java.util.logging.Logger; + +/** + * A proactive filter that monitors the execution time of the request processing chain. + * If the execution exceeds the specified timeout, the filter interrupts the + * processing thread and returns an HTTP 504 Gateway Timeout response. + */ +public class RequestTimeOutFilter implements Filter { + + private final int timeoutMS; + private static final Logger logger = Logger.getLogger(RequestTimeOutFilter.class.getName()); + + /** Thread pool used to execute the filter chain asynchronously for timeout monitoring. */ + private final ExecutorService executor = new ThreadPoolExecutor( + Math.max(4, Runtime.getRuntime().availableProcessors() * 2), + Math.max(4, Runtime.getRuntime().availableProcessors() * 2), + 60L, TimeUnit.SECONDS, + new ArrayBlockingQueue<>(50), + new ThreadPoolExecutor.AbortPolicy() + ); + + public RequestTimeOutFilter(int timeoutMS) { + + if (timeoutMS <= 0) { + throw new IllegalArgumentException("timeoutMS must be greater than 0"); + } + this.timeoutMS = timeoutMS; + } + + @Override + public void init() {} + + @Override + public void doFilter(HttpRequest request, HttpResponseBuilder response, FilterChain chain) { + + HttpResponseBuilder shadowResponse = new HttpResponseBuilder(); + // Preserve state already present on the real response before downstream execution + transferResponseData(response, shadowResponse); + + Future future; + try { + future = executor.submit(() -> { + try { + chain.doFilter(request, shadowResponse); + } catch (Exception e) { + throw new RuntimeException(e); + } + }); + + } catch (RejectedExecutionException e) { + logger.severe("SERVER OVERLOADED: Queue is full for path " + request.getPath()); + response.setStatusCode(SC_SERVICE_UNAVAILABLE); + response.setHeaders(Map.of("Content-Type", "text/html; charset=utf-8")); + response.setBody("

503 Service Unavailable

Server is too busy to handle the request.

"); + return; + } + + try { + future.get(timeoutMS, TimeUnit.MILLISECONDS); + transferResponseData(shadowResponse, response); + + } catch (TimeoutException e) { + future.cancel(true); + logger.warning("TIMEOUT ERROR: " + request.getPath() + " was interrupted after " + timeoutMS + "ms"); + + response.setStatusCode(SC_GATEWAY_TIMEOUT); + response.setHeaders(Map.of("Content-Type", "text/html; charset=utf-8")); + response.setBody("

504 Gateway Timeout

The server took too long to respond.

"); + + return; + + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + future.cancel(true); + handleInternalError(response, e); + return; + + } catch (ExecutionException e) { + handleInternalError(response, e); + return; + } + } + private void transferResponseData(HttpResponseBuilder source, HttpResponseBuilder target) { + target.setStatusCode(source.getStatusCode()); + target.setHeaders(source.getHeaders()); + + byte[] sourceBytes = source.getByteBody(); + if (sourceBytes != null) { + target.setBody(sourceBytes); + } else { + target.setBody(source.getBody()); + } + } + + private void handleInternalError(HttpResponseBuilder response, Exception e) { + logger.severe("Error during execution: " + e.getMessage()); + response.setStatusCode(SC_INTERNAL_SERVER_ERROR); + response.setHeaders(Map.of("Content-Type", "text/html; charset=utf-8")); + response.setBody("

500 Internal Server Error

"); + } + + @Override + public void destroy() { + executor.shutdown(); + try { + if(!executor.awaitTermination(5, TimeUnit.SECONDS)) { + executor.shutdownNow(); + } + } catch (InterruptedException e) { + executor.shutdownNow(); + Thread.currentThread().interrupt(); + } + } +} diff --git a/src/main/java/org/example/http/HttpResponseBuilder.java b/src/main/java/org/example/http/HttpResponseBuilder.java index db6e1880..bd4026af 100644 --- a/src/main/java/org/example/http/HttpResponseBuilder.java +++ b/src/main/java/org/example/http/HttpResponseBuilder.java @@ -1,6 +1,8 @@ package org.example.http; import java.nio.charset.StandardCharsets; +import java.util.Arrays; +import java.util.Collections; import java.util.Map; import java.util.TreeMap; @@ -75,7 +77,7 @@ public void setBody(String body) { } public void setBody(byte[] body) { - this.bytebody = body; + this.bytebody = body == null ? null : Arrays.copyOf(body, body.length); this.body = ""; } @@ -146,4 +148,19 @@ public byte[] build() { return response; } + + public Map getHeaders() { + TreeMap copy = new TreeMap<>(String.CASE_INSENSITIVE_ORDER); + copy.putAll(headers); + return Collections.unmodifiableMap(copy); + } + + public String getBody(){ + return body; + } + + public byte[] getByteBody() { + + return bytebody == null ? null : Arrays.copyOf(bytebody, bytebody.length); + } } diff --git a/src/test/java/org/example/filter/RequestTimeOutFilterTest.java b/src/test/java/org/example/filter/RequestTimeOutFilterTest.java new file mode 100644 index 00000000..f46b6281 --- /dev/null +++ b/src/test/java/org/example/filter/RequestTimeOutFilterTest.java @@ -0,0 +1,91 @@ +package org.example.filter; + +import org.example.http.HttpResponseBuilder; +import org.example.httpparser.HttpRequest; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import java.util.concurrent.atomic.AtomicBoolean; + +import static org.example.http.HttpResponseBuilder.*; + +import static org.assertj.core.api.AssertionsForClassTypes.assertThat; +import static org.assertj.core.api.AssertionsForClassTypes.assertThatThrownBy; + +class RequestTimeOutFilterTest { + + private RequestTimeOutFilter filter; + private HttpResponseBuilder response; + private HttpRequest request; + + @BeforeEach + void setUp() { + filter = new RequestTimeOutFilter(100); + response = new HttpResponseBuilder(); + request = new HttpRequest("GET", "/", "HTTP/1.1",null,""); + } + + + // Happy Path --> Allt går bra + @Test + void requestTimeOutFilter_shouldSucceedWhenFast() { + + // Arrange --> FilterChain som körs utan fördröjning + AtomicBoolean chainInvoked = new AtomicBoolean(false); + FilterChain fastChain = (request, response) -> chainInvoked.set(true); + + // Act + filter.doFilter(request, response, fastChain); + + // Assert + assertThat(response.getStatusCode()).isEqualTo(SC_OK); + assertThat(chainInvoked.get()).isTrue(); + } + + // Timeout Path --> Anropet tar för lång tid och kastar RunTimeException + @Test + void requestTimeOutFilter_shouldReturn504ResponseWhenSlow() { + // Arrange --> En simulation av en fördröjning + FilterChain slowChain = (request, response) -> { + try { + Thread.sleep(600); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + } + }; + + // Act + filter.doFilter(request, response, slowChain); + + // Assert + assertThat(response.getStatusCode()) + .as("Status code should be 504 at timeout") + .isEqualTo(SC_GATEWAY_TIMEOUT); + + assertThat(new String(response.build())) + .contains("Gateway Timeout"); + } + + // Exception Path --> Oväntat undantag kastar en exception + @Test + void requestTimeOutFilter_shouldHandleGenericException() { + // Arrange + FilterChain errorChain = (request, response) -> { + throw new RuntimeException("Unexpected error"); + }; + + // Act + filter.doFilter(request, response, errorChain); + + // Assert + assertThat(response.getStatusCode()).isEqualTo((SC_INTERNAL_SERVER_ERROR)); + + } + @Test + void constructor_shouldRejectNonPositiveTimeout() { + assertThatThrownBy(() -> new RequestTimeOutFilter(0)) + .isInstanceOf(IllegalArgumentException.class); + assertThatThrownBy(() -> new RequestTimeOutFilter(-1)) + .isInstanceOf(IllegalArgumentException.class); + } +} From 598358ebda03e95d1042a47c9478a7f0b0539b11 Mon Sep 17 00:00:00 2001 From: Martin Karlsson Date: Thu, 26 Feb 2026 21:48:19 +0100 Subject: [PATCH 35/40] Created test-files/ directory for testing files and the file-test.html page in www/. --- www/file-test.html | 0 www/test-files/test.jpg | Bin 0 -> 5819 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 www/file-test.html create mode 100644 www/test-files/test.jpg diff --git a/www/file-test.html b/www/file-test.html new file mode 100644 index 00000000..e69de29b diff --git a/www/test-files/test.jpg b/www/test-files/test.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8bf506459723345f8af76c7a828047d568b67ba9 GIT binary patch literal 5819 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 literal 0 HcmV?d00001 From 557cdd0cb02fa2b71c27f72fd236508f5c727699 Mon Sep 17 00:00:00 2001 From: Martin Karlsson Date: Thu, 26 Feb 2026 21:50:21 +0100 Subject: [PATCH 36/40] Added the design of the file-test.html page --- www/file-test.html | 276 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 276 insertions(+) diff --git a/www/file-test.html b/www/file-test.html index e69de29b..e68ae5f2 100644 --- a/www/file-test.html +++ b/www/file-test.html @@ -0,0 +1,276 @@ + + + + + + File Type Test + + + + +

File Type Viewer

+ +
+
+ + + +
+ +
+
+
+ + + + + select a file type above +
+
+
+ + +
+ + + + + \ No newline at end of file From 7d9c594261bc3613b818b842191d3379dad2712f Mon Sep 17 00:00:00 2001 From: Martin Karlsson Date: Fri, 27 Feb 2026 02:03:22 +0100 Subject: [PATCH 37/40] Added JavaScript logic to display files --- www/file-test.html | 55 ++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 53 insertions(+), 2 deletions(-) diff --git a/www/file-test.html b/www/file-test.html index e68ae5f2..36719d72 100644 --- a/www/file-test.html +++ b/www/file-test.html @@ -270,7 +270,58 @@

File Type Viewer

- - + + \ No newline at end of file From e31f485aefcb527609dbc549c2ecca7820e93eb3 Mon Sep 17 00:00:00 2001 From: Martin Karlsson Date: Fri, 27 Feb 2026 02:07:34 +0100 Subject: [PATCH 38/40] Fixed warnings --- www/file-test.html | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/www/file-test.html b/www/file-test.html index 36719d72..f6a566f0 100644 --- a/www/file-test.html +++ b/www/file-test.html @@ -305,8 +305,14 @@

File Type Viewer

filePathDisplay.innerHTML = `${path}`; if (kind === 'image') { - contentArea.innerHTML = `test ${ext}`; - } else if (kind === 'text') { + const image = document.createElement('img'); + image.src = path; + image.alt = `test ${ext}`; + image.onerror = () => { + image.outerHTML = `file not found: ${path}`; + }; + contentArea.innerHTML = ''; + contentArea.appendChild(image); } else if (kind === 'text') { fetch(path) .then(response => { if (!response.ok) { throw new Error('not found'); } return response.text(); }) .then(responseText => { contentArea.innerHTML = `
${escapeHtml(responseText)}
`; }) From 80ffccf569c4db31e5ab96a1385e49c85b2f9886 Mon Sep 17 00:00:00 2001 From: Martin Stenhagen Date: Fri, 27 Feb 2026 10:35:55 +0100 Subject: [PATCH 39/40] Feature/config loading from classpath (#72) * Added new methods loadFromClassPath, loadOnceWithClasspathFallback and createMapperForName. Modified createMapperFor-method to work with createMapperForName * Updated main to use new method loadOnceWithClasspathFallback * Added new test: fallback_to_classpath_when_external_file_missing() * reworked loadOnceWithCLasspathFallback to adress external file deleted between Files.exists and load() silently bypasses the classpath fallback. Removed unused code from main. * Replaced new YAMLFactory() with YAMLFactory.builder().build() after feedback from coderabbit. * Uppdated main to run both loadOnceWithClasspathFallback and cli. * Added null preconditions after feedback from coderabbit and removed unused import. --- src/main/java/org/example/App.java | 6 +- .../java/org/example/config/ConfigLoader.java | 59 +++++++++++++++++-- .../org/example/config/ConfigLoaderTest.java | 12 ++++ src/test/resources/application.yml | 6 ++ 4 files changed, 76 insertions(+), 7 deletions(-) create mode 100644 src/test/resources/application.yml diff --git a/src/main/java/org/example/App.java b/src/main/java/org/example/App.java index 966e9563..0189e1f3 100644 --- a/src/main/java/org/example/App.java +++ b/src/main/java/org/example/App.java @@ -11,9 +11,11 @@ public class App { private static final String PORT_FLAG = "--port"; public static void main(String[] args) { - Path configPath = Path.of("src/main/resources/application.yml"); - AppConfig appConfig = ConfigLoader.loadOnce(configPath); + AppConfig appConfig = ConfigLoader.loadOnceWithClasspathFallback( + Path.of("application.yml"), + "application.yml" + ); int port = resolvePort(args, appConfig.server().port()); diff --git a/src/main/java/org/example/config/ConfigLoader.java b/src/main/java/org/example/config/ConfigLoader.java index 96274158..86bd5ef5 100644 --- a/src/main/java/org/example/config/ConfigLoader.java +++ b/src/main/java/org/example/config/ConfigLoader.java @@ -2,7 +2,6 @@ import tools.jackson.databind.ObjectMapper; import tools.jackson.databind.json.JsonMapper; -import tools.jackson.dataformat.yaml.YAMLFactory; import tools.jackson.dataformat.yaml.YAMLMapper; import java.io.InputStream; @@ -27,6 +26,32 @@ public static AppConfig loadOnce(Path configPath) { } } + public static AppConfig loadOnceWithClasspathFallback(Path externalPath, String classpathResourceName) { + Objects.requireNonNull(externalPath, "externalPath"); + Objects.requireNonNull(classpathResourceName, "classpathResourceName"); + if (cached != null) return cached; + + synchronized (ConfigLoader.class) { + if (cached == null){ + AppConfig base; + try (InputStream ext = Files.newInputStream(externalPath)) { + ObjectMapper objectMapper = createMapperFor(externalPath); + AppConfig config = objectMapper.readValue(ext, AppConfig.class); + base = config == null ? AppConfig.defaults() : config; + + } catch (java.nio.file.NoSuchFileException ignored) { + base = loadFromClasspath(classpathResourceName); + + } catch (Exception e) { + throw new IllegalStateException("failed to read config file " + externalPath.toAbsolutePath(), e); + } + + cached = base.withDefaultsApplied(); + } + return cached; + } + } + public static AppConfig get(){ if (cached == null){ throw new IllegalStateException("Config not loaded. call ConfigLoader.loadOnce(...) at startup."); @@ -52,17 +77,41 @@ public static AppConfig load(Path configPath) { } } - private static ObjectMapper createMapperFor(Path configPath) { - String name = configPath.getFileName().toString().toLowerCase(); + public static AppConfig loadFromClasspath(String classpathResourceName) { + Objects.requireNonNull(classpathResourceName, "classpathResourceName"); + + try (InputStream stream = ConfigLoader.class.getClassLoader().getResourceAsStream(classpathResourceName)) { + if (stream == null) { + return AppConfig.defaults(); + } + + ObjectMapper objectMapper = createMapperForName(classpathResourceName); + + AppConfig config = objectMapper.readValue(stream, AppConfig.class); + return config == null ? AppConfig.defaults() : config; + } catch (Exception e){ + throw new IllegalStateException("failed to read config file from classpath: " + classpathResourceName, e); + } + } + + private static ObjectMapper createMapperForName(String fileName) { + String name = fileName.toLowerCase(); if (name.endsWith(".yml") || name.endsWith(".yaml")) { - return YAMLMapper.builder(new YAMLFactory()).build(); + return YAMLMapper.builder().build(); } else if (name.endsWith(".json")) { return JsonMapper.builder().build(); } else { - return YAMLMapper.builder(new YAMLFactory()).build(); + return YAMLMapper.builder().build(); } + + } + + private static ObjectMapper createMapperFor(Path configPath) { + String name = configPath.getFileName().toString(); + + return createMapperForName(name); } public static void resetForTests() { diff --git a/src/test/java/org/example/config/ConfigLoaderTest.java b/src/test/java/org/example/config/ConfigLoaderTest.java index b694a7af..ff92dd93 100644 --- a/src/test/java/org/example/config/ConfigLoaderTest.java +++ b/src/test/java/org/example/config/ConfigLoaderTest.java @@ -137,5 +137,17 @@ void invalid_port_should_Throw_Exception () throws Exception { assertThatThrownBy(() -> ConfigLoader.loadOnce(configFile)) .isInstanceOf(IllegalArgumentException.class).hasMessageContaining("Invalid port number"); + } + + @Test + @DisplayName("missing external file should fallback to classpath") + void fallback_to_classpath_when_external_file_missing(){ + AppConfig appConfig = ConfigLoader.loadOnceWithClasspathFallback(tempDir.resolve("missing.yml"),"application.yml"); + + assertThat(appConfig.server().port()).isEqualTo(3030); + + + + } } diff --git a/src/test/resources/application.yml b/src/test/resources/application.yml new file mode 100644 index 00000000..1e368859 --- /dev/null +++ b/src/test/resources/application.yml @@ -0,0 +1,6 @@ +server: + port: 3030 + rootDir: ./from-classpath + +logging: + level: DEBUG From bb5bdc87fe689ab37d792a933926c1e30f83a994 Mon Sep 17 00:00:00 2001 From: Martin Karlsson Date: Sun, 1 Mar 2026 21:18:43 +0100 Subject: [PATCH 40/40] - Cleaned up unused HTML code - Made the JavaScript safer and easier to read - Added comments and docstrings to the JavaScript - Added test files, the soundbite is taken from a royalty-free music library and was combined with the GIF version of the logo to create the video files --- www/file-test.html | 81 +++++++++++++++++++-------------------- www/test-files/test.gif | Bin 0 -> 281114 bytes www/test-files/test.jpeg | Bin 0 -> 9174 bytes www/test-files/test.mp3 | Bin 0 -> 152064 bytes www/test-files/test.mp4 | Bin 0 -> 100539 bytes www/test-files/test.pdf | Bin 0 -> 9374 bytes www/test-files/test.png | Bin 0 -> 23093 bytes www/test-files/test.svg | 3 ++ www/test-files/test.txt | 1 + www/test-files/test.wav | Bin 0 -> 912462 bytes www/test-files/test.webm | Bin 0 -> 86564 bytes www/test-files/test.webp | Bin 0 -> 5060 bytes 12 files changed, 43 insertions(+), 42 deletions(-) create mode 100644 www/test-files/test.gif create mode 100644 www/test-files/test.jpeg create mode 100644 www/test-files/test.mp3 create mode 100644 www/test-files/test.mp4 create mode 100644 www/test-files/test.pdf create mode 100644 www/test-files/test.png create mode 100644 www/test-files/test.svg create mode 100644 www/test-files/test.txt create mode 100644 www/test-files/test.wav create mode 100644 www/test-files/test.webm create mode 100644 www/test-files/test.webp diff --git a/www/file-test.html b/www/file-test.html index f6a566f0..dae0d619 100644 --- a/www/file-test.html +++ b/www/file-test.html @@ -203,19 +203,6 @@ .filepath span { color: var(--accent); } - - .skipped-note { - margin-top: 1.5rem; - max-width: 760px; - font-size: 0.75rem; - color: var(--text-dim); - font-family: 'IBM Plex Mono', monospace; - line-height: 1.8; - } - - .skipped-note strong { - color: #555; - } @@ -272,62 +259,72 @@

File Type Viewer

+ \ No newline at end of file diff --git a/www/test-files/test.gif b/www/test-files/test.gif new file mode 100644 index 0000000000000000000000000000000000000000..7d8b7063ff8000156d88cf60fd7e99167ac589de GIT binary patch literal 281114 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 z z<1`s0WR(+vgvX6UvTSGlMcgzBX#ZWL0`bWP3H(`BM;CRz)tsA71~EhkMF^lh&QkQ8 zzwmIY=JOD({gG=d!)J2qoGsu{WmDdrb4Pk2uf93F@lcJu0A^Xr$B!fNOt@JjJC*W0 zPHDTuoEt=E%R%1$!BVUgl$6JQRu_8g)ND)4bAG0Ak79}UDmQ$UW9+o^2z6(A%=U_+ z4%2F=1Cehdx?3^M{1D6u6F?geKzbAOax9?gQn=<4E0d<1HOJW+$@#vYGxGcCbKG{^ z3C_zykr{MO7?o#7W&gA)`^CHW+vi21E!SVbjiQ2MomhLvkr*c2lEmFirEiO)*KLKQ zGdQ}dh=CDMQV$zD`kZ$w>ibob@wziQzoB7r4)`$U&GW;5{5ShkdGhf=<<6%SBEU@! zvWov*fcGLf%Ocv(RQG9q~@5`NYcOrz7#iax%Euz>Elkho>r zjLsrBKT^HY6tYpmGn#`DN$?}y&6dfq$YiKoRObA#s;a2;297z)1M+iVC$e0cK{SMj z?4Z)JEpQ_eFT|9Rdd=E_#tKbrN1}rW_@MbF3nUR zS?h(MXypCvq!jxJuq)-gZz&{&I2gEOD!;yJ>`1YYTUsiZA%H6clMj>w=ZMh^%f{I+q?}inp*NLI`w|WC|!@oJSmo z6}arJ?SMKHO7yeeQ_J5szF^C9%o{}9eFVgCPw5(vj7TEE-DZ`wXQZvItetakUOmW0 z_PRpMOau@bLeRqmh=UWJGMlul60y_xv74`sWhC5iycE_`qAP)IXn=l0otym*37~Qx zrN6H-5C6Rq;fY+*LhgJ0%y5eUx}ck0p3l)F!FS|=(jq}RJ&4{BWKQW-P92O_uehvS zhWNSu;=@J$o6mJUE=7`06`k;;2F|aKP>TIWS5hZ6S@qD3(&8S@K6V7ky(&?fa)?}F z#Q>)xc?Vf0Qw1DT5?o#UUPXwo=|G{VB{l#gIXI=K1KOwGVb&m{#%9j;>D)&r2W#OK7=yK@Fzau3TgoGc}D@<~0gTncBAm@3KVn2$r$ z870+a2qjbUOgG<#81*!TTRVEpB{Oq5G3HZF%$+=50uiz^J#~+S6`sbm_A4Wg!8Vw3 z&BhznfgtMZ%ItcLh>eO{B^>&IqMejecaQ7hx6$=uk0S~0GzT+Y6`IpZb@;b$>@iQ`pPI8C_{9%lFZTV91OaB#&sOF`68S4vLW>LnM1H+ zUZorpC&Xw-DOyxw(+TpTvD22&%%2e!Kh4!oR>wMl0>(P`3i*j7P#T34Amc<)Sn*7D zV#Le)lOM(f-`C`9oLF+IAd*#kjjKe5?IWNrc$aC=;OeEIXeT~HvX{G5VoLhEdWq-S zV4G(OqSN__z+aUOC0eF%(@c=rWrKyYxdqqHm#u?(M?y3xB^C$(E`n=GcF1na|eC?-T;(jM<#Nn zO0i^mn7`$(%JxBy)k)^3oK}N&V$0CHW}Y9Q8{V&P_lQFil(%oWoc+GF_T9Vr-V%pB z-pN&JR$I~f@3)M`6CM23dtGKC1gHGw+%n5&%^j**5BIcM}PqfO-@@A&p(E5En0$G{ZqZp-%gowsg}mX;)d}%Eyh(pDOB`g0K5jJg*f5 zJ6u6>z-|tB2bR0bIItOA9nLP*KDEvOWtLpz@j4tdKf|-EC$JN0dT)7DDhCwKl%j68 zdx5e@k~S}!K_iF9F^F3>CFYxd@z~1G8dUF?n2{DH4Q`N5)q0NSyMA16GeJ2lKWwH9 zI*MorwB`+>=e<cNNxC&EY7->j)rI})kS-!uWDuoQjrlp#tL z*|wF!h42^a~Plc#&81 z^HY{Uc9by<(6 z!m1cT_;mraJdUvMmOv7j@kDC|N4Z|iUFS4_+ee342|B&EbxBd@h`zR^HZUt89c$Y? z>h1*G9EdbVY?6&CimFZFHKC4W2E1`U zs4<-|a#4Wu(%en<`lomdz^}$@n>Y>Fev==RuD-&Al@4Mf1u(1B%SVph7*yUSgy?(| zBB#h~w+pc>D|`p&@tTNb-@m~2X^*Si-M5>jR1J<4zd}n1p3XAw0l-uYcAOh?zfe7P zM#@3nqWkD$SNx34Xr}CC^?rGoS~qA2=|BKrFcJ$t$I+W6a_m+CTyket^XI~Mwy&O4 zrnC>~{vZ#*lqenm;{$X_z>;5qmAlO;9fki!I&@#^RW)iuEUuOy|8Z7@HdHoFwvXry z&0M6EcM@t=P4)Y$v91E9d`Ix;SEF(!l1c}!Zw6qdvgyWN`wo>-3K&TWtz(FFy_{Is zeik$@)j$Qd$uvwM%w@+Cn_vx$p=k^Sf+_tp9|O3ROE8uFAUwlq+&9Z`{4l!~H%K2{ zLy6^djv+pqUi2|QNx;!AU0`yZz>YtdXbI625)0NIjGcGmmV+ zu^XUBZ?1^BptDZ)A>lavo_^LkD;=#WDDrmN*?VJ|5#bBTu{hX6HnSm+7Q9#XPN9&vrj0zrCIK}!^nat~|X zTsz^$!yv+C(HXjDPaG_aFt*W~G`}4E5KyQ4IaPWf)`^7*?L_MXhu4&Jzx}xC-+lf( zNp}F5XK4WQGxag65e4s^-vYq_CNNiW+YKTZUwEbBw%UfHu=uaaPpMo~Tr%7)nck?P z8w4^ZvooAHx315PIuNH2WBUh95i43{f!N3sNKb+ph386PL1_~P?RQC@iuePEaxVHhDPPXVub)5kxa&G$-*0``6=q3sll~#S2`@dTaVC_&0H*#+ z7YZqeyVdw4r$vnebhdsBg{{^zq{GbHvirGkiL96H?+fj6rIVC)^pId&Qx@j42x~)F zfIA`)m#6d(XVZqT_I$WgjpWdVnUOL6wf*Tz%}Z-Oh83uHpzoG3D^R)eKR79ZyDkq@ zWy|LtKd(bL&*}el;GV0__iOMCqc(>Ns2rqgkS{hyg6m6`um7R3(2*W{qfOXKwVmGm zXX!jsB8TWRGvdG)z=hMbP^&*h$to@`9fqB2~{sdosicQgy;(-%r)T;*#8%J``-mVd4BKX@855KtS$ch zvG~syd3A4k>HXx}H$&kD}v1Z6UV|5J9%p#99CjDtZ12ZQns2IU?M-hWV@0}LuG49+VI&MlBLyx{DD zp#Ay5`wM~?xk1@^!TWN8(z1fn_XX`K3oPUZ7VrWKd4UJGflO{-AvZ9a6PU*d%;f~` zX9gBA0}Gged8|N2abRIlVD7=doT9*-gMpa^f%|ga`RDTdv$<3zms-U2FW~y;as6|-)EtgK zljC2+@h@Oe3pvz$x$$H9=d%9$B8TNKe`Ox@FFNR-U*um{M9n+spUb4?6j5`Sas()c zh5i|Z{<($z`wOV@S7w2KdY;@3QnPa8z>m6j4|R8`Us0)FL7C6NGQV8D?*Xn~G1o7j z>%-#u<#PNAIX(p(pInw-9?LI>XVf2 zos#AgpXQa4`dp5ha~$2%d}J2u&yp5m2|>=~cp6`SBgPw=G6ja-&{Vyb&w5@lDi z8$H>5N7APF-R|@__nq;ZqUoDr=$oQr+@dm^ljEJX(_NzI4%_JtQFNP_80Uy6yDf6? z_U!)`;7uS0Z%gnRiZk=g{|mh78wa#^UVcGsu(=YY;*YO07ea1k{8!*}4E+zhJ-u6R z#n$pfdlyuv`4sPY|Gf&3j7HsQJQCb7M`{1G!JuxNFMIbf>FvNmrZ8Klidk_tqzg>z?e*Ita6f*jcyWNwuDUw)vZ8Fs93F z&N(R#sa{O@T273&@4`7fj{J&qdMTd1t9qN-de30N?J4d0YAvBm`Fu8LRAqDf1YB!h z_pf0s>#^lg<>ra0JIa9)h7Wd*)H1B$10B-V+-o|;*U6dSS*I71+Q!jIm^yyRs|I6MkP?W7f*OB|K8@Mz$A@186j!*P} zt_(@J3T|+Xc9EbOGF|hI)A^{QeQo+|hEBLTD8+2-|*JOxP+5_UlCGqg_qu%aC zG3J+bljat<>nm9bAC{QVw|@QT%7L6}ruV6wcLG!9fQ|xP2#X1rFxG3H0x9lEFV|XTT7CU2!2qoY0!^-u7Mq?5SwN40E zW(W>x$1Fm$3Mo&yVqALaqBaGo3*$<74nlp!-;i04d1eWN5SF9XAbuhly|?qr7Z8-R z6ZoSKS0Wm!oS1tVp<8CSxB4y8kIK<{N}!T zI|r05$XMpj{+-O5+!FZDgvs(K3zyg+#C7z5r|Wyew-AR^Y)S{rD_6=hm|=Olk$zaW z1r!ZXYO6nRM4MC%Kin~poGBQEzp^&%R0@Rc;sL2Ll=_F5t%MO#x z3uc@19fnV=Vo$iqSMuB2525UlTRW))-f7=(Z*301UIaMG$3^IrN;dJ%l8-^;?h^56Rr6<~<;@>8W~DcV zpvE#EyEq9?!)T#*E_e`APrhZ$XjSPTfQWa+!B0>^Z3pQv@^SLhPu(oSnGG|V4MNV| zUz|d9<`@!Kz?vAbl#e@sv8075H~H}B7=xb?TQYw_O|7%6uG#f90h`#Z51TaQ@g2Kj zlT?Oqk9V+3Pq7YbPe9IHjAZL0FRi;k_YDyKYq&mf3gIdAQ0|-}J2cbLAa zyj7ZQFhPbIEL&)tYp?}0yXGydp_e?1bX*eYTmzMO)v%?Il-c8r_Syr42TKr#VJT?q zTPbcvWEbfRX)rc!Rj`WmLo-A;Bux?d7sbP*G!$%S+UhUq*UnlGf(K_ky-UDv0OqHl zZxiC+XMAhpR6H=z37**ZNL^^(3jFzelttf(aP0;=oE_B*`ebPo#*YB$#Vn$YOkr4G z5-#~cicb?|Rkv%$8-$(X;HAZD*9VGBGu|01z8M|X9dG%ZK^=I0v%jjZ(eRLx3Pfwe znknS=vjKca7YR2>VWXNt3C>GZl#{e+6Se-C*Kt1=p4P7#_FM7Fw`(tUONK`uT2)!B zE)f5k4Cq@MKd#@!fl5us)RP|LH;RO?UXt%R?@)w}O27-J$IcI6AG1pI9PTOp^<83? zo^fkqtKy+K=ds-gR)^N0TIg6nA7r&uO$x!p&*jQ=nN?dEo{HC)qlQ!obdSorE%IpI z;MVqR{`I08`%0Xaxgp<5!sC>V2#0is2fkSeK{9i24^F&>sVC(_*Pnf!g>YS)VL0Yz{*(4a(FC5%WC-Na z1U5I8`$`1aBQAPjLd^2isAeJ_(G`wwg}aOWP=`n%jq zp|QD$!(^l=0dXS75JW73I29%5GT~GhdK?xf&M$PtM-y0WS5-5`uxJt7n}Qi*Vw(k! zHw?eGsv%B7gc%cUG0i(HHt&klNC`vfArV3;%1O-F&qQ`Jkw*!7m&3E1d(vE~MHoed zkOIpA;NC=6MFuWZ1g{rxqxBJ5o~X;T^s8i^CUK+M8V&c56cR;4+>9sH(X;Br=9kIV z38s)1g8VoHyiN?mnxGF+FqdU~MWuX?>zoKc@dN>JjEN{hx+;qC=_2?^N@Vzu>s%QAQ1mP<|45$7biHAy5JxQAWa~Q?=FKn`*o- z7nxS*nz@othj)b@s*_@F(xKahxD4OAPZHEM7B<@sca?-pda|BHKy4EqSX zVAJXqM%TIOli)crWWWtfhNLzms!CI%?&E5853z=BgAQQA`(;QwQT`92D~SM^q{ID0 zHuMPNVzG_(qRA9dOCZCfFyKjq;7JL7P#KeNrco-w)G|UJJT8AnZP@a@q$H(oXG=q6 z6v~AHf3LRjmk7O1jHL=uX(Bw8UN&oQ##Z#mL73I{&O_O-919wwty(Alq?kG+m+2tRO4 zCqT7Bj7lP-LnW}?QkrNB+*yq3l|wa&dlLzLQhKUYh-ws~8l;GOWZVoBTSkMfW8z$B zI1)p_>~GpT1~`;{a6-R5(A;=)O1nmR`?WhQ^jJiP6nswvb)w)m!d*+&M&a+nG&?fP zD`jAN0n}0q4yI!-Fu+;+6*d}e{7HZWOW=(l)M2_=f#wM%ehY4@`fb?>`T{gZ2A%{U z5kiFl4)8|?*$g0=^dn}Y$Lg6y?f6Ve>l(FQxTwfI9CWs7o!3hXc>)~*A9G@qEC>(Gh__p9vpV; z{G}V`Up_jIT{x>%-tejy?LtR{Fwk96oSLf-hM^F*aNYJ=F@H>8XQL0D5F5g zWUP?@b^&MrFMuZ{Fh|+3Vk9O)jEVz62K{imggEo0t6#kUEed3n+}ub;GYS+#>5xl+ z*JWk=vIHd{Afg0d(G9|+7;F!Kv-eg!7NgT8;8^{p&J37Hh^t2R48?<@>Tn}cFj@-&xPkJZTZqt)g*d$f5PKPBn2@&(gpz;QlSR1FsSikFYeYe#k znyJu!D8h{njhEuxp4e~b8;t>wnh1GHHkvOI{$0epVc^=9v7-`%pA=$A$Gyu_e0Lg` zCc@m>FuIxo@sO?>r=rx1?5_(@BTU$88Kjd6wH0G_$jON#B0|4#Btgawq<{`mK$)K_VuAh*U-3QmC*$VYp#tFAZqbr78-j z*a;T4frZJT!-FK~Dh6V=5S1v!2EQRTuLk#zo_>j?eSZEp%w}?}VT`UcFj@rYT zGHaQ#=$|q_iPE}j0<$s>kbhDXkg0VFt?}TzVl?(e!bvf#FHL#xoC6pFU98 z;67?^22}0tw4)C*AGVP(K-KOmjQg)@r}%*8{vc$qK2Fcr@SO{Am$LHdbk(2f%4+mM z5TibJCSWTd#b*xm&on=sIZ#b>?RCBvh3trZ)Fz$jT7}6LJ=&cA=s?TE!=gvo(nrm) z{LuKxG-31Qmd8_Jg*TNR>ckoBIYX{+U0C<~ned;HI-Cq^I zr4bQt6#pRbzXG3RH&K$S<%UQ5NnndlVUpdE(!i$)h^I>}K$DL4tVOlEmMnOU*dct@ z9_RV@&oj^f`qRRlCKeiAC`D|NLTeu3Ha(W+A!8-zbbWM^?ao~-Xv86J{J=~T8NG4< zy}#vQUdxQKB@nrr3H`5aXJG>mBcJLf&RegYw;jNoWX{{C)13z9?Pf8XEyf&XF|L2- z3jime$s?!riaWEAQ>P;C*=i0I-f5@x~J3E4!rQ4eGyYMZ(TIMz6ZJP(2EU! z=Y5OjC*oIq&*%iIb{SLNR9)mT3FbHp78rx|5Wc!Y#&-J-0$VMqW!PQTQ}!begeSvAmm zL@14=peMs6o8b+Z_=gm5Wko*=3z?C?yg|4(V%SF_!Wr|P;R#X}gHH>$yJ!Zc-UY`n;g0PC>_qbq0ECX|s0yCFF92f-L#CsS6JSS6d zWI@a%w^QGLM`%qz z?g)-nKY%n*aHb#?G!7_xLdNJ&ccwyQFK{&l>82oI>#=oo_$%S(&~;}qAjn%8tRB(+ z+y%HS`%)wUcF;rbOQB05S?r$vcq%lQ_|bz2JH^1q=zLex1PiX;AlzSAtcD;A8%4RfvRmVYsDm$Q6wCU@4f2kaAJZna^Mu z84Eu&TY~+h`tp0S4*7?dLCPabZ#gKIxE)&X~ok4~LLwhYX`$WTod> zpS0$+r7I#{haZnPxna%S)CN18w?b}#SG#g&;FjBsUfUnsX*r+vVT86OA)>-;>~g*D zwl566j>Cl)x>p)+N}V#zT=UN<1~pP%Q;iJhJ(YVyGmnQ~8jd`>@y@0a*!A|&tZul& zANW$d&-oV1lWEiARxc08?YC2ji(Xx;4&n6I@0KH07B;n{d{dGd$o6QrZ*5weoWF86 ze(%!#he9_GlV3aC2mL%Z#(C~hL|7v5dN&iTn8}?mfHQI?|9k-u9@&OsBvKF8r0fdPNoh8sq8nLa9Mp1 zzIStx?$M^iX~qj31^JiDQm$W9^63ztV-=7xvYpr$l9A8f!rvx)tVp1*g{!Ir@6o*YpjizGmGw>^9!JqXz1T#kkr~8NFHUIak^VdRaqGe1HZfY z?RB2NsnNBxHoF4=euM`QXyFLpsszN*jN6l~!-}o8MUzXgA1B z4mh-P5Vcv}6lc`rBQc57PCTwVd>Bo9Eg5z(*?;QqBie5Y;*$=10f=%Uau);cDg9FuF<87I%jtii5RJ+aGYWqV? z^Dml)^M-J-mCL% zF>zI94AvOVhH~9g<%apQ!50g}axa)WvE^6HBBPPGKj%5>YLbWQIWiIxDJfBp(KODV zL&_iJaljY%0`t*oa3$|nv~fMul%`wZ*X5=mMtQ6BP@&t;akOo7-3<6~2>0+0`RnQ{ zjOZCPJ9Rx*#wC>)jl3E@5nfUf0^B)Rknr?iQ1saJFbSu0bQkR-MdP_PqLZ&k^Mok% zXGNa@(Lq_`V0=H-L)p`6?3t$1Che%H|0wsU9j8w4vFrJxXQSekxCd^Iju{ zVkObaaDc6rh!7#&<23{15&Z>`PxIS$f??JTvIg4U&Qq^$B6ZThT%*oEQJ%SXaLM2% zbq2u@&MAe6+#G9^m8`Sb4gA8b7Tcozxgy1Vmluw#b_55+DcKl|b?B4ZL&sZVIby-qM{YPi*>dU0*43QPHyMPz zdr*U~!oK`a`3$~yBto&v&?=c8bSU^BX~qlPG{?0PK#hr1AFtJy?Q+u3wOd^=q|G}{ z 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]^`46m|HRE=I60D&*+=HcSo8&xfG=w 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 literal 0 HcmV?d00001 diff --git a/www/test-files/test.jpeg b/www/test-files/test.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..86ead588bc5e6e4b1c2f5e6aeaab17b7fe887ece GIT binary patch literal 9174 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
O8!Xb`t-h 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ΠHTBG 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 )V&hWLy+T3%p8mPjoZbs;pPEU~`Dobs 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 literal 0 HcmV?d00001 diff --git a/www/test-files/test.pdf b/www/test-files/test.pdf new file mode 100644 index 0000000000000000000000000000000000000000..5b93f5ccf66c68a0e811e09cb51890a323bc3c5b GIT binary patch literal 9374 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%0AVj%3 zy!l&k@;uZx@q}E>))m%q-aRZ72s6un?*^hAIgjO*X6a-)CHGd`XhcGzDW~IIv=!an zKnhRD>$Uzo+{N%M=xDcJ(PXigg#> z?cA=TYPWtV7pk?3Ki7BB4BYCo zAsM><#ZuJ@%Qo1rjD0TcC_3xX zzP>5%Pr%%6f8k2>$?$Y0!L`JG{SeQEX+^y+VKo>AiO zie9|;ANBl=G576^yF`~?bku**(M>s5yhYpCEb;zO91? z97$xXxJFc~4VtOZD3N{13Fwb;S5vY8>^52~L)6c)S^g9;+xb^>vV1Ab&D>&dyhDqf0RCcNE|Rm@^!b?x|NmUmY3?#`-2K(&c4HZuU5Xoaxn z6Cn?crsi@4G2<$I+AzQY+*Z(IB?#WU1pram8pxo{EIx-`c>SRCB>RYyXb`Z8h-$~d z=DtQRRow0#+T(emcOAW%=$xN_ndiY}m!YUZHVnEB1Pt1qdpaa@rFP*3kNU5;PK1;y zXWxq^UNzNuLm%>T7p1w<>2*Rkm67-!;_EdgVu6!7Bd!?o)bWni>4aM-5wVqd zvy!#n-2i=givo*L!B+ThdW zAi2!$s$6PYp!KZa!6lbWN_lFA1@;B0m%1Dw2el44TEuhI?Z@VPQSx7Y-d$)~qnU>Z z&$urt&6}XaE-0Y=aRCMA?9dJyB%dV%^U_d!AAM|BR>OabA$s!O*LQE69jn1Vyv)l#Td|#de!4yT^3;A53d4o?<9`ELo{>%f literal 0 HcmV?d00001 diff --git a/www/test-files/test.png b/www/test-files/test.png new file mode 100644 index 0000000000000000000000000000000000000000..1d054faab1c93d48e2ad6d49fdeda6e4948d71cc GIT binary patch literal 23093 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 L8EV!)b%^>u?5LQv literal 0 HcmV?d00001 diff --git a/www/test-files/test.svg b/www/test-files/test.svg new file mode 100644 index 00000000..41fa50ed --- /dev/null +++ b/www/test-files/test.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/www/test-files/test.txt b/www/test-files/test.txt new file mode 100644 index 00000000..08e00ed2 --- /dev/null +++ b/www/test-files/test.txt @@ -0,0 +1 @@ +Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. \ No newline at end of file diff --git a/www/test-files/test.wav b/www/test-files/test.wav new file mode 100644 index 0000000000000000000000000000000000000000..3dcba7c32843626d2c9d1bcd449d441fafdcc009 GIT binary patch literal 912462 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⪚s9vv$>utZ#vv;qXYk+zJ;%Eq%! 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